As a former C# developer who did try to run some stuff on Mono, I don't think it's an unfair description at all. First, some personal anecdotes:
- Wrote a brief (4 hours perhaps) Windows Forms app that did some math. Ran it on Mono. To Mono's credit, it did run. But to my horror, it actually computed incorrect results.
- I used a popular UI widget library for .Net. Turns out though most of it was written in C#, it had a number of Windows-only DLL imports, and could not run on Mono.
- At the time, ASP.net support was barely functional, if it existed at all. To be fair, I'm not sure if this is still the case or not.
Further, I will offer this additional argument. It is widely known that Java's promise of "write once, run anywhere" is a joke. Not that cross-platform Java can't be done (in fact it can), but it does take deliberate effort to ensure cross-platform support. And this is Java, which has official support for Linux (i.e., the JVM code on Linux is basically the same JVM code on Windows).
Contrast the Java situation with MS .Net, which does not have official support for Linux, but does have the option of Mono on Linux. MS .Net and Mono are two totally separate environments built out of separate code-bases. In this situation you are almost guaranteed to run into major migration headaches, if not outright barriers.
Now perhaps you are running from Mono from the start; well of course that is going to work. My original point isn't that Mono doesn't work when running code actually targeted to it; that may well be the case. My point is that Mono gives traditional .Net developers the false belief that they can run their Windows-targeted .Net code on Linux easily. For most, or at least many, that is simply not the case.