У вас func не совпадает, можете в этом удостовериться запомнив парочку и сравнив. Вы же их в цикле создаете, и для каждой ячейки своя функция, и только последнюю из них вы пытаетесь убрать.
Можете, например, запоминать все func в
WeakMap, где ключами были бы сами ячейки.
Или, как вариант, перепишите func так, чтобы ее можно было объявить один раз, еще до перебора ячеек.
----------------------
Или вообще откажитесь от removeEventListener, и вместо этого примерните фильтр
перед addEventListener.
Или повесьте всего один обработчик кликов на table и уже внутри обработчика проверяйте по какой ячейке был клик. Это еще и память экономит.