Как я понимаю, outerHTML сохраняет все с разметкой. Но я данные outerHTML передаю в функцию save(expotr_html.outerHTML, 'export.html'):
function save(text, name) {
    const a = document.body.appendChild(Object.assign(document.createElement('a'), {
      href: URL.createObjectURL(new Blob([text])),
      download: name || 'file.html',
      style: 'position:absolute;top:-9999px;right:-9999px;clip:rect(0,0,0,0)'
    }));
    a.click();
    URL.revokeObjectURL(a.href);
    a.remove();
}
Получается где-то в функции разметка исчезает, где-то в blob?