I'm guessing that it would be because the $oOldRootElems are belong to the existing DOMDocuments, and not the new one (nodes remember which document they belong to, otherwise things like "insertAfter" wouldn't make sense). In that case, you'll be wanting to use importNode to get the "old roots" into the document, and then append the imported nodes.
$dExistingDOM1 = DOMDocument::loadXML('<root><node/></root>');
$dExistingDOM2 = DOMDocument::loadXML('<foo><bar/></foo>');
$nOldRoot1 = $dExistingDOM1->documentElement;
$nOldRoot2 = $dExistingDOM2->documentElement;
// now we create the new DOM
$dDoc = new DOMDocument('1.0');
$nRoot = $dDoc->createElement('newroot');
$nRoot = $dDoc->appendChild($nRoot);
$nNewRoot1 = $dDoc->importNode($nOldRoot1,true); // here we import; use "true" so that
$nNewRoot2 = $dDoc->importNode($nOldRoot2,true); // descendent nodes are imported also
$nNewRoot1= $nRoot->appendChild($nNewRoot1);
$nNewRoot2= $nRoot->appendChild($nNewRoot2);