Hello again timeshifter.
I reduced your example down to this very simple case <div><p>text</p></div> and see the problem there.
To summarize. Clearing that outer <div> like such div.innerHTML="" causes all its childNodes, and even all their descendants to lose their <#text> nodes. The elements that were nested within that <div> all seem to be preserved and relocated elsewhere. But they all become parentless, which I guess means they all reside separately in DocumentFragments with no relationship between each other anymore. Any nesting hierarchy or sibling relationships they had is lost.
Regarding their lost <#text>, I copied those objects into an array beforehand, then checked them after clearing the <div> via innerHTML="". With IE8-10, those nodes still existed and their nodeType and nodeName properties were still accessible. But trying to access the actual nodeValue text throws an exception. So the pointers must be invalid (broken). With IE11, you might call this an improvement, we just get an empty string without any exception thrown.
So, this thing you found is very odd, timeshifter. Would you like to do the honors of posting it on Connect?