setting innerHTML destroys all children, removing them using
removeChild does not. Thus if there is a reference to one of the nodes
the first method (setting innerHTML) would invalidate that reference
while the second method does not and thus allows the node to be
reused.
Consider an example:
<div id="foo"><span id="bar">sdjasd</span></div>
var fooEl = document.getElementById('foo');
var barEl = document.getElementById('bar');
goog.dom.removeChildren(fooEl);
document.body.appendChild(barEl);
In this example the bar span is moved from the foo div to the body.
Had removeChildren been implementyed by setting innerHTML this would
no longer work.
--
Emil