ну да, скрытие пустых категорий именно на витрине, для покупателей.
если нужно скрывать непустые категории, т.е. категории, где есть товары, но у товаров нулевые остатки, то для этого скрипту придется посчитать остатки по всем товарам, т.е. проход по всей базе, что в динамике сильно замедлит открытие страниц.
Если уж совсем правильно делать, то стоит скрывать все дерево пустых категорий (включая и родительские), если внутри у товаров нулевые остатки.
Мы делаем скрытие категорий с нулевыми остатками для магазинов, что используют нашу выгрузку, но не рискну предлагать как отдельное решение (трудоемко вычленять из общей логики выгрузки).