Cost is an issue if you're deploying on large scale. The fact the source is not available is an even bigger issue.
OTOH if using a proprietary solution ($$ and closed source) was fine, I'd personally go with C# or F#. If you're fine using a closed-source runtime, why not just use a better language (not to mention Microsoft's products are free for startups via BizSpark)?
Because Mono is not a solution when you need high scalable servers running in commercial UNIXes, z/OS and similar systems? These type of solutions always get to use C++ or Java in our projects.
My current project is actually done in C#, but it is a 100% Microsoft stack.
But for the scenarios you described, I agree with you.