Запрос в цикле - ай-яй-яй, как плохо.
А вообще вот прямо для этого решения:
foreach ($arResult['ITEMS'] as $key => $arItem) {
$arSectionList = array();
$rsSections = CIBlockElement::GetElementGroups($arItem['ID']);
while ($arSection = $rsSections->Fetch())
{
$arSectionList[] = array(
'ID' => $arSection['ID'],
'NAME' => $arSection['NAME'],
);
$arResult['ITEMS_BY_GROUP'][$arSection['ID']][] = $key;
}
$arItem['SECTION_NAME'] = $arSectionList;
$arResult['ITEMS'][$key] = $arItem;
}
И на выходе получишь $arResult['ITEMS_BY_GROUP'] где ключами будут ID разделов, а значениями массивы содержащие ключи элементов ITEMS принадлежащих этому разделу.
Но если много элементов то вот это вот: CIBlockElement::GetElementGroups надо выносить за пределы цикла.