Ответ проще, чем я думал:
quill.clipboard.addMatcher (Node.ELEMENT_NODE, (node, delta) => {
// return stripped and reformatted text
return new Delta().insert(node.innerText).insert('\n', { header: 1 });
});
Хитрость заключается в том, чтобы правильно использовать Delta DSL. Сначала он не понимал, как работает форматирование заголовков с таким странным подходом новой строки, но, похоже, именно так работает Quill.