Ok, I will first answer last question

Monad dont have support for remote computing - it will of course be available in final version, now it is not.
Monad (current version) have only two limitation - dont support remote networking and second thing is aliases cant contain parameters.
Now for the harder part - comparing CMD vs. WSH vs. Monad.
Well, it wont be so hard at all

Monad containt all features of CMD + WSH + much more.
WSHMonad have same advantages as WSH.
For example accessing WMI objects is quite simple and logical:
CODE
MSH> $objBios = get-WMIObject Win32_Bios
MSH> $objBios.Name
Phoenix ROM BIOS PLUS Version 1.10 A02
MSH>
You can using objects in Monad using cmdlet net-object, so you can do the same as in vbscript.
CODE
$objShell = New-Object –ActiveX “WScript.Shell”
CMDYou can use everything from cmd in Monad, so there is no reason why not using MSH instead of cmd. Implementation of StdIn/StdOut is quite simple to do, so I didnt encounter any compatibility problems at all.
What is the main reason to use MSH for me is that
a.) in 3-5 years (according to MS) every program from MS will have support for Monad. So you could do (similar to *nix) everything from cmd.
b.) it is frontend to .NET. I cannot fully work with it yet (as I am not programmer), but it is quite similar process like WMIC - but it is much more powerfull. It is just not another shell, it is shell + language + framework.