It limits functions to never returning newly constructed objects
No it doesn't.
The automatic reference counting capability of Delphi interfaces always seemed like a good idea to me, but seems to be rarely used.
You mean rarely used by people who are amatures, developers have always been pushed towards programming against interfaces.