Решил проблему. Оказывается, если в настройках компонента задан SECTION_ID, фильтр по нему игнорируется. Решение до неприличия простое - при вызове catalog.section проверять, осуществляется ли фильтрация по SECTION_ID, и если да - оставить эту настройку пустой
"SECTION_ID" => !empty($GLOBALS[$arParams['FILTER_NAME']]['SECTION_ID']) ? '' : $arResult["VARIABLES"]["SECTION_ID"]