While this is something to this, you also can't separate cost of living from salary comparisons. People making a lot, but having to spend a lot, working in the Bay area, NYC, DC, LA, etc. etc., don't have the options of keeping their salary and moving to a Cleveland suburb for the lower cost of living.
Even if there were enough jobs for people do it, they wouldn't pay enough.
They are essentially getting a premium salary because they have to pay a premium COL. It's not really a choice because the premium salary only comes if you work on the premium area.
So it's not really accurate to call a developer who make 130k in Palo Alto "upper class" and call a developer who makes 70k in Arlington Heights, IL middle class. They probably lead similar lifestyles.