Нормального алгоритма для безглючной работы этого блока так и не придумал, пришлось рыть документацию по phpBB. В итоге сделал так:
$ignore=implode(',', array_keys($auth->acl_getf('!f_read', true))); //получаем список всех форумов, к которым у пользователя нет доступа
Ну а дальше - WHERE NOT IN($ignore)