Interfaces über einen Rückgaberwert zu liefern ist in Delphi ohne Probleme möglich und nichts problematisches, wenn man Delphi nicht austrickst. Dazu gehört, dass man nur mit dem Interface arbeitet und keine durch Create erzeugte Instanz besitzt. Zudem umgehen untypisierte Zeiger als Deckmantel für Interfaces die Referenzzählung (Wozu hier überhaupt?).
In C++ wird es eben nur mit OUT gemacht, weil jede
COM Methode HRESULT zurückgeben muss; In Delphi gibt es dazu ja die Exceptions. Das sollte man bei der Interfacedeklaration berücksichtigen. Stichwort: safecall.