Это можно сделать, если вы оберните xml новым тегом либо до его синтаксического анализа с помощью l xml, либо после (что не очень красиво, но также работает).
Предполагается, что вы собираетесь сделать это за пределами l xml:
comt = """
<!-- This comment can't be removed. -->
<foo>
<!-- This comment can be removed. -->
</foo>
"""
new_comt = "<super_root>"+comt+"</super_root>"
tree = etree.fromstring(new_comt)
и оттуда продолжить с вашим исходным кодом, который после
print(etree.tostring(tree).decode())
выведет:
<super_root><foo>
</foo></super_root>
Затем вы можете также удалить тег обтекания, если это необходимо.
Как я уже сказал, не очень элегантно, но выполняет свою работу.