Почему вы используете StreamReader, а затем XmlTextReader? Просто передайте имя файла в XDocument.Load. Тогда все работает так, как вы ожидаете.
Если вы создаете ридер на своем собственном XDocument, вы не можете изменять его настройки, и, таким образом, ридер сообщает о пробелах, которые затем сохраняются в дереве XLinq, и при записи они отключают автоматическое форматирование в писателе. Таким образом, вы можете либо установить для IgnoreWhitespaces значение true в своем считывателе, либо передать ввод только в виде имени файла, что позволит XDocument использовать свои собственные настройки, включая IgnoreWhitespaces.
В качестве примечания, пожалуйста, не используйте XmlTextReader, при вызове XmlReader.Create создается XML-читатель, более совместимый со спецификациями.