Ну обработчики должны быть доступны всегда. Соответственно, каждый раз будет инклудиться и модуль магазина и модуль каталога. А вам оно не надо - если вызвался обработчик модуля, то модуль уже подключен (где-то там), ведь вызов идет из самого модуля.
У меня событие OnProductAdd тоже не срабатывает при создании товара в магазине. Редакция Бизнес 1С-Битрикс: Управление сайтом 15.0.2. Что имел в виду Алексей Косоротов непонятно. Ссылка же на другое событие. UPD: function OnProductAddHandler($id, $arFields) если $arFields передать так &$arField , то событие не сработает