This is just my opinion but I really think there's a mentality of paying money to people who they perceive as getting paid ALREADY. That perception is wrong. My son partially worked his way through college by working at a posh restaurant. The waiters were paid practically nothing by the restaurant, their pay consisted almost entirely of gratuities.
Apparently restaurants are exempt from minimum wage laws in regard to their waiters and waitresses. Since learning that I always tip 20% unless the waiter/waitress was rude or the service was lousy.
A lot of people don't tip because they don't believe people should be paying someone for a job that a person's already being paid to do. A lot of people don't know how little waitstaff make. That's what I was trying to get at. Myself I tip 20% and above just because I know these places try to pay these people as little as possible.