[QUOTE] написал:
но мне просто уже интересно, как можно решить задачу регулярной очистки инфоблока "правильно"[/QUOTE]
Убрать из вашего кода CIBlock::GetByID, заменив либо на CIBlock::GetList, явно указав в фильтре, что права не проверять, либо на \Bitrix\Iblock\IblockTable::getList. И убрать вызов CIBlock::GetPermission - эта проверка вообще здесь некорректна.