To destroy an object and only that object, you can use Instance:Destroy(). But FallenPartsDestroyHeight will also remove ancestor Model where the object is the last BasePart inside. But wait, through testing, other objects like Humanoid can also prevent the ancestor Model from being deleted. And there are other classes that are not Model like subclasses of Accoutrement that are still destroyed if the last BasePart inside them falls into the void. I do not have an exhaustive list of every possible class that either gets destroyed when the last BasePart gets removed or prevents said classes from being removed.
My proposal is simple: A special method to replicate the removal behavior of FallenPartsDestroyHeight exactly without needing to know every edge case. And no, simply setting the position of an object to -50000 is not clean and will probably cause all sorts of edge cases.
One possible idea could be, just like how workspace:BreakJoints() was overridden to accept a table instead of breaking joints of the actual workspace, since workspace cannot be destroyed with Destroy() anyway, maybe workspace:Destroy(Instance) or something could be overridden to provide the proposed functionality.