The point is that Microsoft will never
really want them to be 100% cross-platform. We're talking about a convicted software monopolist here. In my understanding, .NET is cross-language, not really cross-platform. What happens when MS sues Mono? Goodbye non-Win32 .NET ports! I'm not sure why you're so convinced that the cross-platform interoperability "will only get better." The MS marketing folks sure say so, but looking at their track record, in all likelyhood, it will get worse...
I read this about Mono:
"Some C# programs can run on .NET and Mono - but not any appplication that uses the Microsoft .NET libraries (99.99% of them)
Microsoft released the source to an implementation that compiles and runs on Windows, FreeBSD and MacOS 10.2.
As per Microsoft license for this release, you can't do any comercial work with it. You can't modify it and distribute for comercial use.
It's useless."
If that's true, then it seems pretty limited.
It really seems like a mixed bag. Only time will tell. I am VERY wary of vendor lock-in when it comes to MS products. (as you can see

) Right now I can freely compile my code in bot VC++
and gcc no problem... I'd like to see that done in C#/.NET