The main disadvantage is that the COM components must be registered on the client system, it's impossible to run more than one version on the same system, and there is a performance hit in the COM Interop layer.  This also leads to the notorious "DLL Hell" concept which Microsoft has eliminted in .NET.  X-Copy deployment is not possible.