1. Because they don't want to spend a lot of time looking for developers - it's far easier to find a Java developer than, say, a Ruby developer, simply because there's so many of them. Also, because there is so many of them, in all likelihood they will ask for standard wages whereas a developer with a good knowledge of some lesser known language/technology might ask for a higher pay because he knows his skills are in demand and the employer cannot easily find somebody else with those skills for a lot less money.
2. For certain types of software there is no need to have the best of the best. Average programmers are just fine for working on a standard CRUD application. If you're Google and you're hiring people to work on your search engine, then yes, you want to have the most brilliant minds out there, but if you're a company that just needs somebody to maintain it's CRUD application than you'll do just fine with an average developer, who'll be more than happy to work for standard, average pay.
That being said, it's my opinion that, when hiring developers for work on an enterprise app, it's probably best to hire those that have a good knowledge of some enterprise-proven language like Java or C#, but with an interest in languages such as Scala, Ruby or Python. This way you get the guy that knows his way around an enterprise stack, but that's also not just a drone that considers programming nothing more than a day job, you get somebody who actually likes coding and frequently codes just for the fun of it.