Что за странная передача аргумента?
Функция makeBuffer() не вызывает описанную внутри неё безымянную функцию, она возвращает её саму (а не её значение) в качестве результата.
При этом, за счёт замыкания, каждая возвращённая функция работает с отдельной копией глобальной переменной text.
(**) мы, передав внешнюю,
Не знаю, как там вы, но js никуда ничего не передавал, в buffer был присвоен результат вызова функции makeBuffer - другая, анонимная функция, в строке (**) мы ее успешно вызвали, она воспользовалась [[Scope]] присвоенным ей при вызове makeBuffer и радостно сконкатенировала строки, а потом вернула их в alert