In my experience, most of the people who did not tip were of low socioeconomic status, who came from a culture of low/no tipping. Most people who are middle class or upper middle class tipped, and usually tipped 20% or more.
So I'd venture to say that it boils down to how you were brought up.
And yes, you can tell what an individual's socioeconomic station is when you wait on them.