Почему у функции в setInterval «пишем» одни скобки а не две вызывая ее при замыкании?
Потому, что в setInterval() первым аргументом надо передать функцию (он сам вызовет её потом),
а «без setInterval» — для получения результата надо эту же функцию ещё и вызвать самим.

длинный ответФункцию в JavaScript можно «положить в переменную», передать как аргумент при вызове другой функции или получить как результат вызова ещё одной функции. Так же как "строку" или число 42.

В этом выражении, смотрите, есть не 1, а целых 2 стрелочки: (param) => () => {
  console.log("Выхлоп!" + param);
}Две стрелочки, значит, тут две функции. Одна вокруг второй. Первая, та, что снаружи, принимает аргументом param, и возвращает вторую функцию () => { console.log("Выхлоп!" + param); } Причём вернувшаяся функция «запомнила» значение param внешней обёртки и будет его использовать. Это обёртывание называется «Замыкание» или "closure".

Теперь скобки при вызове. У нас матрёшка из двух функций: function(){ return function() {}; }

Чтобы вызвать внешнюю, нужны первые скобки:  ((param) => () => console.log(param))(6) – этот вызов внешней с аргументом 6 даст результатом внутреннюю функцию, которая запомнила значение param. И мы имеем на руках внутреннюю функцию.

Чтобы вызвать внутреннюю, нужны вторые скобки: ((param) => () => console.log(param))(6)()

Итого, две функции — два вызова — две пары скобок.

В setInterval() первым аргументом надо передать не конечный результат, а функцию — её вызовут через некоторое время, не сразу. Тут передают внутреннюю функцию. Поэтому скобки всего одни: с одними скобками получаем внутреннюю функцию.
потму что ты определил вложенные замыкания (не думал что такое синтаксически возможно)
(param) => () => {
вот пример
var x = (param) => () => {  console.log("Выхлоп!" + param);}
x();
// > function x()
x(1)();
// Выхлоп!1

var x = (param) => {  console.log("Выхлоп!" + param);}
x(1);
// Выхлоп!1

лично мне интересно почему надо писать x(1)() а не x()(1)