По моему опыту - не всегда. getChildIds() полностью основывается на кеш-карте ресурсов. А как известно - рост кеша - одна из болезней MODX-а. Так вот, приходилось сталкиваться с проектами, на которых очень много ресурсов. К примеру http://bumparfum.webtm.ru - 150 000 документов. MODX просто не сможет при сбросе кеша перебрать из базы данных все документы и нафигачить их в кеш (в карту ресурсов). Подробно про это я писал еще в 2011-ом году http://community.modx-cms.ru/blog/1744.html. С тех пор особо ничего не поменялось. Поэтому, приходится на крупных проектах полностью отключать карту сайта (для этого используется патч cacheOptimizer). Без карты ресурсов getChildIds() бессилен. Плюс к этому getChildIds() не позволяет использовать дополнительные условия поиска, к примеру только папки, или с таким-то шаблоном. В итоге у вас будет 3 дочерние категории, в которых будет несколько десятков тысяч товаров, и в id:in будет добавлен массив из нескольких тысяч элементов. Сервер расплачется...