Потому что временная функция вызывается сразу на месте.
() после фукции означают её вызов. Если не писать скобочек - вызова не будет. Будет присвоена сама функция, а не возвращённый результат. В js всё просто, всё действует именно так, как написано.))
Таки рекомендую внимательно прочитать статью
замыкания. Если даже после внимательного прочтения будет всё ещё не понятно, рекомендую сделать
поиск по форуму по словам "замыкания"/"замыкание" и начать читать темы по порядку до полного понимания. Я серьёзно, там не так уж много текста для того кто действительно хочет разобраться в теме. Этот вопрос неоднократно разбирался на данном форуме, порой очень и очень подробно.