The short answer is because it is costly and a huge pain.
It is difficult to operate a hosting company that has the latest Ruby and Rails software installed across your server fleet, to make updates quickly, to answer support questions intelligently about a relatively new framework, to provide good and full documentation for Rails apps, and to maintain reliable uptime on your servers. Most hosting companies are used to operating with PHP/Perl/etc. and aren't used to the problems with Ruby/Rails — which they are being forced to install because Rails is so popular and people are crashing servers with custom installs.
At its core, Rails is designed to be served up in a dedicated environment and runs best with cached ruby, models, pages, etc... sitting in memory ready to spit out data to requesting browsers. This is why Passenger and Mongrel are so dang popular (for good reason!). They make sites load and run faster because they utilize server RAM. So you can see why trying to serve Rails in a huge shared environment is tough: holding hundreds of persistent processes in RAM is impossible.
Shared hosting companies usually pull off the Apache/Passenger stack by simply killing off processes every minute or so and praying that no client actually uses the bandwidth he/she signed up for. Thus, there's no way you can pack as many clients onto a server like you can with PHP/Perl/etc. Loads would go nuts. Servers would crash. Clients would not be happy.
So, if a hosting company takes the financial hit and doesn't crowd their servers and keeps processes killed — they can serve up Rails OK in a more traditional hosting environment.
OK — now that you have an idea about why it is so difficult to serve up Rails, check out what would be the right hosting option for your situation as well as our Rails hosting reviews to find yourself a reliable Rails host and get your app live.