Синтаксис-2 менее популярен. Но это обязательно, если деструктор базового класса содержит аналогичный синтаксис. Лучшим примером является наследование std::exception.
Обратите внимание, что несоблюдение такого синтаксиса приводит к:
error: looser throw specifier для 'virtual E:: ~ E()