As per the documentationBlaze.remove requires the view object, but it only removes elements from the DOM rendered with Blaze.render.
I created a quick test where I call Blaze.remove on a template inserted with {{>child}}. The onDestroyed callback is triggered but it stays visible in the DOM.
When I instead render the child template with Blaze.render it will be removed from the DOM upon calling Blaze.remove.
It would be much easier to handle this with reactivity, IMHO
As @jamgold says, it would be better to handle this reactively.
Changing the way you code in Blaze from directively (“when x happens, do y to make it look like z”) to declaratively (“if x, it should look like z”) is hard at first, but when you grasp the principle .
Then you’ll have all the wiring needed for reactively destroying the child instance. Blaze will re-render that part of the DOM as if the child was never there.