"Maybe you didn't publish as an undergraduate.... Maybe you can't even write a very compelling research statement yet."
When I was applying, no undergraduates had published research. And the "research statement" could hardly be described as "compelling"; that was one of the points of the breadth requirements for the graduate program---my eventual research topic was completely unrelated to my interests or knowledge coming out of my undergraduate program.
Besides, a research lab is a workplace after all, and some kids are completely missing the social skills that are needed in a working environment. You can't have that sort in a PhD program either.
No, it really really isn't. The vast majority of undergraduates have no effective access to research experience, even many that are fairly inquisitive and are receiving a pretty good education. This is especially true of undergraduates who are unable to afford tuition at top institutions (and increasingly even in-state public university tuition is unaffordable for the flagship universities that would be considered "top institutions).
Requiring research experience in advance of grad school turns grad schools into an elitist echo chamber.
I can't see having valid or "compelling" research experience as an undergraduate while taking a full load of classes (ok, so you have to take advanced placement courses in high school, which my school did not offer even if my school district did; I'm not sure one way or the other about that) and possibly working to support yourself (I'll leave the alternatives as an exercise to the reader).
At this point, you're filtering on many criteria that have absolutely nothing to do with successful research.
[1] http://grad-schools.usnews.rankingsandreviews.com/best-gradu...
So basically when you have a choice of being unemployed vs doing PhD and getting some studentship, you obviously prefer the latter path.
And I believe there are quite many people who can "code" but unable to get paid.
Coding (or being DBA or analyst, depending on your area) to the level of getting an okay salary is quite trivial compared to that - from the PhD students I've seen the 'most unemployable' ones would be so not because of their ability to code but because of social/mental issues.
If you can prove theorems, then you can also code CRUD websites by following a tutorial, and get paid for that.
If you can't write code if your life depended on it but can write papers on human interface or methodology issues, then you can get a job as a system analyst in any large software development company and keep not writing code there.
It's like you say no one can be admitted to a PhD program in US without first learning some English.
As for your question, no, I don't think that scientists in all of the branches of CS need to be good engineers. But that is just my personal opinion.