Why C++ casting is more efficient (for memory) and blueprint casting - NOT?

Sorry, if I am being dumb, just to be clear, in this case we still create cast, but to the C++ UBaseClass which result in hard-referencing the class from TSubclassOf property. However, in this case hard-referencing is reasonable (because object was spawned and its class was loaded to memory anyway)

I understand now that without assist from soft references and interfacecs managing memory effectively can be hard (because hard references to all used assets will be created anyway and to decrease the amount of unnecessary loads to memory we can use all the aforesaid methods + appropriate classes hierarchies and structure).

The uppermentioned information means that following this strategy we do not exclude\reduce hard-references, but decrease the amount of unnecessary loads to memory because BPs inheriting from some C++ class can also have certain hard-refs to assets unlike C++ class (where it is not recomended, i.e. bad practice)

PS: really appreciate your help and spent time in case you won’t answer this