Minecraft is written in Java. There were games written in (at least partially) Haskell/Erlang/Ruby/Lisp. Unity3D is based on C#, etc. If tradeoffs are worth it, they'll do it.
We already have indie / casual games on Linux. That's not enough to make Linux a legitimate platform.
The actual gameplay is often implemented using scripting. For example, with Unity you write games in C# (with Mono) using their engine, and it's still fast enough to work on cellphones.
Unless someone finds a way to get Next-Gen 3d Engines to run in a VM without a performance hit of even 1%, its not going to happen.
Not everyone does AAA games.
And, as is well known, simply the existence and theoretical threat of a plan B (in Gabe's case, Linux) ensures a much better negotiation position and a better (more fair?) plan A.
If you need to interact with Android, all APIs are done via JNI and certain audio APIs have only Java APIs available.
A huge installed user base like Android maximizes one variable so much that the other gets a free pass.