В последнем случае (а это map по сути) с энергичным списком вроде никак не выкрутиться: если хвостовая рекурсия, то либо последующее обращение списка, либо переписывание в CPS с разменом стека на кучу. Так что здесь рулят ленивость и stream fusion.
Всё это похоже на переписывание примитивной рекурсии в терминах foldl. Какие из этого следствия, сейчас не соображу.
Функциональное программирование :: реккурсивные функции