You don't have to get into the intricacies of laziness when you are learning the language IMHO.
The high memory usage is related to the lazy evaluation of the arguments to the “go” function. When these arguments are evaluated strictly, iterating over the file three times would increase running time by a factor of three, but the memory usage would still be low (ie. roughly proportional to the file size).
The first version iterates three times and the reason it takes long has nothing to do with lazyness, we agree on that.
In order to avoid iterating over the file three times, he writes the second version, which does require understanding laziness (in order to avoid high memory usage).
I stand corrected.