Здесь попробую предположить такую мысль — категории являются иерархической сущностью, если выбирать все, то выбирается родитель, потом его потомки и т.д (или наоборот, вверх по дереву родства). Если указать явную принадлежность child_of, то повторение запросов (перемещение по дереву) уже отсутствует.
Не совсем так, если убрать сhild_of и получать вообще все категории какие есть, то количество запросов не изменится, просто немного увеличится количество потребляемой памяти.
В итоге, как я понял, если делать запрос на получения категорий, которые вообще есть, над выводом категорий самого поста, это позволяет сильно сократить количество запросов. В этом случае, на каждый пост понадобиться уже не несколько запросов, как было до добавления этой строки, а всего 1 запрос на вывод одной записи
Это понятно, но почему при добавлении
$args = array(
'child_of' => 1
);
$categories = get_categories($args);
Количество запросов падает, причем так существенно?
P.s. данная картина наблюдается не только в категории, но и в самой записи, в общем, везде где выводятся категории записи