Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!
1. Вы собираете названия разделов для каждого элемента, а нужно каждый элемент поместить в соответствующий раздел.
2. Вы делаете запрос к БД (GetElementGroups) в цикле - это приведёт к низкой производительности.
3. У вас элемент может быть только в одном разделе? Если да (а в 90% это так), то не нужен запрос GetElementGroups, достаточно обратиться к переменной IBLOCK_SECTION_ID в arItem
4. Собрав ID разделов, вы можете получить их названия одним запросом - примерно так (не проверял)
$dbSections = CIBlockSection::GetList(array('NAME'=>'ASC'), array('IBLOCK_ID'=>XX, 'ID'=>$arSectionIDS));
5. Соберите разделы (ID, NAME) в массив $arResult['SECTIONS']. А потом пройдитесь в цикле по этим разделам и добавьте соответствующие им элементы из arResult['ITEMS'].