Суть проблемы - нельзя сгруппировать элементы по полю с сортировкой отличной от этого поля. Проще говоря: сейчас даже при указании параметра arGroupBy в него добавятся все поля из параметра arSortBy и сгруппированы не будут.
Опять впёрся в стену негибкости системы. Вы действительно не сделали поддержку агрегатных функций при группировке в методе CIBlockElement::GetList? В кодах какого-то другого метода я видел, что вы это сделали (правда там только один тип функции только один раз можно использовать, так как название функции передаётся в ключах массива!). Мне кажется в методе CIBlockElement::GetList это в первую очередь нужно.
Часто получается, что одна и та же структура групп может использоваться в разных инфоблоках (например, товары разного типа, со своими специфическими свойствами, но сгруппированные по единой системе классификации).
Что я предлагаю: - группировку элементов одного инфоблока группами другого; - чтобы это включалось в настройках "дочернего" инфоблока (например, пункт "Использовать группы инфоблока" со списком инфоблоков в выпадающем меню, исключая текущий и другие с такой же настройкой). См. на скрине настроек инфоблока пункт "Использовать разделы другого инфоблока":
В результате внешне группировка инфоблоков должна работать как обычно, причем как в публичном, так и в административном интерфейсах вне зависимости от того, чьи группы -- "свои" или "заимствованные" -- инфоблок использует.
Функционал создания и редактирования групп тоже должен функционировать везде -- и в тех инфоблоках, которые имеют свои группы, и в тех, которые не имеют свои группы и используют группы других инфоблоков. Только в последнем случае, разумеется, группы будут создаваться и редактироваться не "свои", а "заимствованные".