One key distinction is that small towns typically have, or at least had until recently, some reason to exist other than to provide housing and the necessities of life for those who work in the city. A physical manifestation of this is the presence or absence of a downtown area, however attenuated. Small towns have them, suburbs that used to be small towns used to have them, suburbs that have always been suburbs usually don’t.
Taking examples from the Atlanta area, with which I’m most familiar, Stone Mountain, Tucker, Norcross, Lilburn, Chamblee, Roswell, Douglasville, College Park, East Point, and Hapeville all were at one time small towns distinct from Atlanta, though to greater or lesser degrees connected with it economically and socially. Most had their own train stations, their own industries, their own identities. Today, most if not all of them are merely suburbs of Atlanta, sprawl and improved transportation and communication having whirled nearly the whole northwest quadrant of Georgia into an amorphous mass with the partially dissolved City of Atlanta at its center. As distinct entities, they remain identifiable, but not viable.
Decatur, Marietta, and Lawrenceville, on the other hand, while subject to the same forces as the others, have at least to some degree retained their status as distinct entities, aided no doubt by being county seats and thus retaining the need for their courthouses, government entities, etc., which could not be easily picked up and relocated five or ten miles away. They retain, as I suggested initially, some reason to exist independent of Atlanta. Their downtown areas remain intact and remain alive; they are places one may have reason to make one’s destination, and for which no alternate will readily answer. Despite being closer (particularly in the case of Decatur) to Atlanta than many other places I’d consider suburbs, they are not entirely assimilated, nor will they be in the foreseeable future.
Druid Hills, Brookhaven, Morningside, Candler Park, Inman Park, Virginia-Highlands, Ansley Park, Garden Hills, and similar areas, though now mostly considered part of Atlanta proper, were initially suburbs and never more than that. While each has reasonably well-defined geographic limits and is of long standing (at least 40+ years, which is ancient by Atlanta standards, and 100 years for Druid Hills and Inman Park), none ever had its own government, its own industries, or indeed anything peculiar to it alone. Avondale Estates never aspired to be more than a suburb of Decatur, a modest ambition even by surburban standards.