I'm far from an expert in Haskell, but I suspect the justification is because the version in the prelude is tail recursive while yours isn't. So the tail recursive version should run a bit faster when n is large.