по коду reduce видно, что каждый раз просто новый объект создается (мап/тапл/лист и т д), но в самом бим вроде как есть оптимизации, в зависимости от типа обьекта(в листах и таплах по крайней мере при дописывании головы), поэтому собственно все рекурсии с листами при дописывании головы не раздуваются по памяти