Besides which, they're competing against all the other workers in their country. If someone charges $50/hour and gets a lot of work for a similar skill set as you, wouldn't you try charging $45/hour to get the business? If the supply of workers is high and the demand for those workers is low, it does become a race to the bottom. Additionally, they must charge less than their American counterparts because of the inconvenience of being in a timezone where the start of the day in India comes after the end of the day in the US, the language/culture barrier, legal considerations (if someone rips you off, you have better legal options available if they're not half a world away with a foreign court system), and so on.
I'm sure if they could still get the work and charge more they would. However, consider an American-based company wanting development work done. If they have a choice between a $100/hour American worker and a $100/hour Indian worker, odds are very good the American will get the work for all the above reasons.
Cost of education is less in India (and so is the quality if you ask me, but that's not the point and I'm not inclined to discuss this in detail right now). Good developers in India do exist and tend to have learned things from costlier sources BUT have not paid the cost to use them (read piracy).
So in summary, in India the over cost of things was low to begin with and less money (in USD terms) can buy more. So it's a combination of PPP conversion of money and lower cost (even if purchasing power is taken into consideration) of attaining similar skills. What also drives down rates in India is more competition (high population density) - esp. from the spagetti-coder market that operates alongside the quality coder market.