Contradicting yourself there. How can the 4mb embedded Mono run on both 32 and 64? Does it somehow magically interpret itself?
For some kinds of applications, there is a valid workaround: embed the runtime into a native launcher. A ~4MB version of Mono provides most features a modern cross-platform game would need (i.e. xml, networking, I/O, reflection, scripting, OpenGL, OpenAL, a garbage collector and the whole standard library). To get the same features in C++, you'd need libstdc++, TinyXML, boost a separate scripting language (Python, Lua, ...) and you'd still miss a garbage collector. Add this stuff up and you'll see it needs significantly more than 4MB - especially since you need separate 64bit and 32bit versions.