проблем с удалением событий не было
Разве?
В обоих вариантах обработчики не будут удаляться.
В removeEventListener нужно передавать
тот же самый listener, что и был передан в addEventListener.
Обратите внимание, что именно не такой же, а тот же самый.
ТО есть вот так удалится:
const listener = event => console.log(event);
element.addEventListener('click', listener);
element.removeEventListener('click', listener);
А так уже нет:
element.addEventListener('click', event => console.log(event));
element.removeEventListener('click', event => console.log(event));
ибо это 2
разные функции, не смотря на то, что делают одно и то же, и одинаковы до каждого символа.
P.S.
когда программировал в функциональном стиле
то что в обоих Ваших примерах - это процедурный стиль. От того что Вы завернули код в класс - он не становится ООП, как и то что написали набор функции - не ФП.