Il problema non è solo quello, quanto piuttosto la diversa struttura tra le dll unmanaged e quelle managed. Le dll managed in realtà non esportano alcuna funzione, ma dentro alla classica struttura "PE" inglobano tutti i metadati .NET che consentono alla CLR di sapere che tipi e che metodi sono contenuti. Tutto questo non ha equivalente unmanaged: una dll "classica" si limita ad esportare delle funzioni (di cui tra l'altro si sa solo il nome), per cui non sarebbe possibile effettuare un mapping "automatico" tra metodi .NET e funzioni da esportare.
Vale comunque anche quello che dici, ovvero per far andare la dll .NET bisogna caricare il JIT e la CLR, cosa che comunque con il marshaling COM si fa al caricamento della dll.