I've seen that effect - and in another form, cases where doing the easy part first made the harder parts "fall into place" and not be hard after all. I think it relates to "writer's block" in some ways...
Once upon a time this was done before any code was written. It was called 'design'. I'll concede that regardless of how good the up-front design is, some refactoring is always necessary, but just firing up your code editor/interpreter without having thought through a problem is often a recipe for disaster.
Design up-front is nice, but only gets you so far. There's more of a need for it in rigid languages, because changing things later is expensive; less so in dynamic ones.
Anyway, the program in question has been in production for over 2.5 years now, and keeps changing (new specifications, new features, bug fixes, etc), so this really doesn't have anything to do with design up front. :-)