I'd say COM is also run-time type safe casting, and importantly the reference counting is uniform which might help writing wrappers for dynamic and garbage collected languages.
I'm still not sure that it brings a lot to the table for ordinary application development.