Объясните, почему вызов без скобочек?
Потому что оно не вызывается, а передается в функцию как функция-аргумент(колбек), для дальнейшего вызыва.
Если вызвать эту функцию то она вернет false.
Попробуйте набрать в консолиvar ages = [32, 33, 16, 40];

function checkAdult(age) {
return age >= 18;
}

 checkAdult(ages)
Получается вы в функцию фильтра в таком случае предадите результат выдачи он равен false и она не сработает.
А когда вы передаете функцию без вызова то она передает свои аргументы и все в отрабатывает корректно