Yes, well that's what I had initially thought it was doing. Keeping the child processes around when the parent was deleted. But that turned out to be a bug in the client code rather than being in activiti where the process instance ids were GUIDs and a wrong one was being passed to the method to be deleted.
It does delete children and grandchildren processes in subworkflow if we delete the parent as expected.
I'm sorry, should've put a reply out saying its a non issue.