почему у вас столько раз dataSource.apply snapshot
Это разные функции, для той или иной операции, где то удаление, гдето перемещение, гдето вставка с одной секции в другую. Разные функции оьновления ui для разных операций
С методами делегата и datasource в обычном все просто, там можно проверять в методах то или иное условие и показывать supplementaryView или нет. А тут все что связано с supplemenaryView статическое, оно не оьновляется никак