Да, не могут конечно. Просто у тебя есть целевой механизм обработки событий ячейки. Вместо этого ты пишешь действия на хедеры, прикидываешь кучу данных всюду и вызываешь функции снаружи вью. Это объективно хуже чем хранить обработку событий в одном месте
Просто давай попорядку, нужно свернуть секцию, у секции у которой есть много ячеек, грубо говоря хедер чтото главное в этом деле, поэтому это максимально логично вешать логику колапса на хедер ведь, чем создавать еще ячейку которая отвечает за видимостл других ячеек, это как-то нелогично получается
>>Я просто не понимаю что мешает навесть логику тут func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { тут пиши логику кому делать хедер кому нет }
Если у тебя MVVM во viewModel контроллера где лежит таблица