Мне удалось выяснить основную часть моего вопроса: «Как вставить один XML-документ в другой?» Полученный результат будет работать, но в напечатанном XML отсутствует перевод строки.
s = <<EOF
<application>
<email>
<host>mail.test.com</host>
<port>25</port>
</email>
</application>
EOF
p = <<EOF
<auth>
<user>godber</user>
<pass>foo</pass>
</auth>
EOF
subdoc = REXML::Document.new(p)
doc = REXML::Document.new(s)
doc.root.insert_after( '//email', subdoc.root )
doc.write
это выводит следующее, которое, как вы можете видеть, имеет тег auth, начинающийся сразу после тега закрытия электронного письма без новой строки
<application>
<email>
<host>mail.test.com</host>
<port>25</port>
</email><auth>
<user>godber</user>
<pass>foo</pass>
</auth>
</application>
На самом деле, как только я закончил, я понял, что могу изменить свою последнюю строку на
doc.write( $stdout, 2 )
Это было ясно написано в учебнике по rexml, я просто упустил из виду, что что-то не так. Я предполагаю, что подам это на случай, если кто-то еще будет озадачен этим. Если у кого-то есть советы по этим вопросам, я буду рад их услышать.