So I think it's perfectly reasonable if the salaries of people are assigned directly according to their capabilities. Why should a programmer that is twice as fast as his peers only get 10% or 20% more?
Actually that's one of the reasons why I've moved to the Bay Area. In my home countries things as seniority are the main factors in regard to the salary. In the Bay Area it's exactly the opposite - and that's much more motivating for me.
It really depends on the industry. Take finance. Having a programmer who can spit out code ten tiems as fast as his compatriots doesn't result in a ten-fold improvement of returns. There's some economic benefit (because there is real value to having better programmers) but don't expect it to be proportional to skill in an industry for which the software isn't the final product/service (or where other aspects, like legal, really drive the business)
Or maybe it does. A programmer using a better algo might save CPU cycles, storage needed, time to complete, or may even do something which would be plainly impossible for an average programmer. So, in the real world, a programmer who is better by 10% actually yields far more than 10 fold improvement of returns. There is significant economic benefit, but they should be clever enough to point it out.