Является ли передача переменной по указателю затратной операцией?
Я видел эти же или похожие бенчмарки, которые приведены в этой статье, год или два назад.
Тут важно отметить, что методика тестирования в статье не учитывает очень важный момент - там передача значения происходит всего один раз, т.е. функцию вызвали один раз и на том всё.

Но часто бывает так, что данные приходится передавать многократно.

Например есть функция, которая извлекает из базы данные, вторая функция обрабатывает эти данные, во время работы второй функции - вызываются еще несколько разных функций и все эти данные в каждую из них передаются, а потом еще все эти данные передаются в JSON сериализатор и т.д.
Т.е. одни и те же данные передаются много раз из функции в функцию.

Если не использовать передачу по указателю - данные будут копироваться каждый раз при вызове функции.
В таком случае передача данных по указателю однозначно отработает быстрее даже с учётом того, что будет задействован сборщик мусора.

В общем если структуры небольшого размера и используются всего один-два раза - быстрее отработает передача/создание такой структуры по значению как и написано в статье.

Но если эти данные нужно будет передавать во много разных функций - то в большинстве случаев передача через указатель будет быстрее, даже с учётом того, что garbage collector это ресурсоёмко.
В Go все параметры передаются функции копированием. То есть функция не может изменить оригинал аргумента, а работает с копией. Если вы хотите его в функции изменять у вас есть два варианта

передавать ссылкой, тогда функция может поменять значение по переданному адресу
или возвращать значением

func myFunc(arg type) type
...
bigArg = myFunc(bigArg)
В первом случае вы увеличиваете нагрузку на коллектор по подсчёту ссылок.
Во втором случае делаете аллокацию и два копирования, что тоже затратно, особенно если аргумент занимает много места в памяти.