I would start with some functionality, ugly as it may be and then switch over to work on the code for a while. I would then look for common code areas and try to come up with functions or classes that were as general as possible. Some might say I'm too picky about leaving things to generalized, but even though my codebase is 90% procedural, I and others have little problems, debugging and/or adding functionality.
I also took great care to generalize as much of the UI as possible. Even though there aren't too many objects in play, sweeping presentation changes in both layout and style are fairly easy.
I guess, to answer your question, an intuitive user interface takes time, as does clean reusable code. A programmer who is disciplined to see the value in both would most likely be able to start a new project with both in place. Unless you have done it before, it will take time and you will mostly likely fall towards one side.
I have done most of my coding solo, but I suspect that in a team, the most important keys to success, aside from technical excellence, would be clear communication and a well-defined goal.
Really short answer, you can have both, but you need relevant experience, good communication, a clear goal, and the ever elusive time.
Rather, I am asking whether it is even possible in principle to have a clean spec that corresponds to an intuitive UI.
I would still say that only with lots of relevant experience could a project manager or whomever spec it cleanly and intuitively.
So in theory, it think it is possible, but not at all easy. It would take a lot more time than "normal".
I wonder if that much forethought might save more time than would be otherwise spent on development and testing?
Kind of like the adage of "cut twice, measure once".
I guess part of the reason for this is that you need to preserve backwards compatibility with the user's previous experiences. And this includes some ugliness from early software.
But there's probably also a limit in terms of what average users can understand in terms of what's logical, consistent, and simple.