first of all, as already pointed out, java is more expensive when it comes down to hosting. lately this is changing (GAE, ...) but still, generally taken, your java web server still needs more memory and you'll have to pay for that. (i don't think this is an issue for big enterprises, but it is for small startups looking for a cheap solution to get started)
i don't think it's harder to deploy java webapps or to maintain java servers, that's just a matter of having the necessary knowledge.
i also have the feeling that development time with java is slightly higher in some cases. (startup times of servers, not easy to do stuff outside an IDE, more characters to type). notice that i'm saying slightly, the difference is not that big as some would like you to believe. luckily the java world is catching up with frameworks like grails and play framework focussing on rapid development and languages like groovy and scala.
for example, when you're only using bare spring + hibernate you still have to write lots of code (data access for example), something you want to avoid, because most of this code is just boiler-plate code. (look at how grails handles this with GORM).
also, i think ruby on rails and django (python web framework) are created with 'web 2.0' apps in mind as opposed to most java web frameworks.
there are also a lot of more or less subjective reasons why people don't want to use java (java, the language, but also the jvm):
- java is regarded as being for the 'enterprise'
- it's not cool (see point above)
- java is cumbersome to write
- java servers are bloated
- negative experiences with stuff like websphere and RAD (the IBM IDE)
note that i don't necessarily agree with these subjective arguments. these are just the sentiments you hear lately. although i do agree with websphere part ...