I think I have a solution to this: taxes on cities where the jobs are, levied by cities where people live.
If a city wants to have people working there (to run the local businesses: restaurants, etc.), but is so expensive that those people cannot afford to live near their workplaces, and the city refuses to do zoning to support lower-income housing, then the cities where the poorer people live should be able to levy taxes on the cities where those residents work, to help pay for all the transportation issues. Obviously, the federal (or maybe state) government would have to enact this legislation.
This will create a big incentive for cities to do better zoning, and if they refuse, then they'll be transferring a lot of wealth from their own residents (in the form of property and sales taxes) to the places where their lower-level workers live.