Really for me, it comes down to the fact that even though Windows Server has made leaps and bounds over the years, it just still feels very clunky. Just sitting idle, it's an absolute resource hog. I've never actually done it, but running C# on a Mono server just seems wrong. It feels like cheating or you're trying to fit a round peg in a square hole and in my experience doing things like that can lead to major issues down the road. Things that I would rather not deal with.
Java on the other hand can be developed anywhere and ran anywhere... mostly. You have a lot more options as far as frameworks and libraries and what servers you can use. If a new, better, server comes out tomorrow that completely flips the Java world on it's head, then you should be able to switch to it given the proper considerations. Unlike C# where you're pretty much stuck to Windows and you're stuck in IIS.
As far as shops go: Being stuck to doing things a certain, a certain set of servers, and a certain set of libraries like you have with C#, tends to breed a very close minded mentality. I like to think that Java's openness leads to a way of thinking that's more open to try and explore new things. Obviously this can't be said for ALL shops, and I'm sorry if I offended anyone, but this is just my experience.
That being said, I'm kind of anxious to see what the future holds for C# since they recently open-sourced their compiler. As a language I think C# is a lot better and I like that you can use .Net libraries and don't need tons of 3rd party libraries from random sources. I started a new personal project using the Play! 2.0 Framework and the thing that really sold me on it was the Razor inspired templating engine it uses. As an extra bonus, it's MVC structure is very similar to ASP.Net MVC3/4, which I think is one of the best and where I originally learned MVC.
I have worked professionally in both.
I like C# more as a language, but the Java's flexibility wins things for me.