Прототип wrap
на самом деле работает с текстовыми узлами, но это не говорит об этом явно, а текстовые узлы не расширяются обычным способом.Также селектор $$
исключает нативные текстовые узлы, поэтому вам нужно выбрать их самостоятельно.
var h3 = $$('h3').first(),
text = h3.childNodes.first();
Element.wrap(text, 'a', { href: '#' });