I'm going to ignore all the "social" aspects of the supposed pay difference in my analysis. I think they are valid and accurate, but don't paint the full picture. This is coming from the perspective of a programmer turned PM. Note, however, that I haven't actually observed any pay difference - in the current startup/tech climate, good engineers are in high demand and are commanding super-high salaries. The best engineers are often the highest paid (cash-wise) in the company.
The reason good PMs are paid highly is because they use leverage to create more value across the organization than they can provide as a single contributor. A great BA or PM guides the whole project and the whole team, making a group of people more efficient by properly prioritizing their work and getting more value for each hour worked. A great PM measures these results, and shows the difference they make. A great PM tunes the product to the customer.
Great PMs are held accountable for the product and its success in the marketplace. Great PMs can't do their jobs without great engineers and respect that fact.
You only need one great PM for every 5 great engineers, so you can be more discerning about who you hire and how much you pay them. Since great PMs are accountable, they command high equity value, and should accept that instead of higher salaries (like salesmen take commission).
If this isn't true where you work, you should work somewhere else where it is.