When should TObjectPtr<T> be used outside of UPROPERTYs?

Thanks for the answers, that confirms our approach as the correct one.

For example there are cases in the engine code where TObjectPtr is used locally, within a function, to store the result of creating an object with NewObject

Why is that done in those cases? Does it provide any benefits, such as for debugging?