"ability to call external program" is a bug? Well, I do it on almost every line in my super-readable bash scripts. You say it's a bug because you mindlessly follow this Maven doctrine.
My projects are unique and so is the way how I build them. Separating classpath source into 'java/' and 'resources/'? It's just masturbation. Why do I need to put my sources in 'src/main/java' and 'src/main/resources' if I know that I'll be using only Java in every project?
Writing plugins... why whould I want to do such unpleasant thing as writing Maven plugin when I can usually do it in several lines in script?
It's better to use different good tools, rather than one bad tool. And by the way, since when is Maven SCM? AFAIK Maven just pollutes SCM with it's dumb release plugin.
What a non-sense. You can't sanely describe build of your project(s) in documents. Did Maven folks include every possible scenario in markup? Nope. And that's why all Maven builds that are not simple jar of classes tends to have long sequentional calls of build plugins.
I see it this way:
First we had bash and make and ability to do almost everything (run other programs, ...) by using the right thing/language for the job. There was only lack of the functions to deal with Java builds and package management.
Then we had Ant, XML programming language with very limited possibilites (I don't regard targets as a feature). But at least we could express what we wanted.
Then we had Maven. If we needed something special we need to add it to sequence of build plugins (in several hardcoded build phases). Mostly we resort to do things in Ant plugin.
Forcing you to something is anything but good.