Lets get this straight. The key is not to have no abstractions. That's just stupid. It's to pick the right abstraction to build on.
"The problem I've seen time and again is that they have no idea how this is implemented. Ask a green .Net developer about the ViewState lifecycle and see if they know how that really works."
There are lots of stuff I use that I have no idea how it works. And in fact, that's the way it should be. If I'm only using things that I fully understand, I'm probably not moving fast enough.
Ask your RoR dev who is using an OS relational store how queries are processed. Nine times out of ten they won't know, despite the fact that they could have looked at the code anytime in the past decade. Actually even give them an hour to go look it up, and you'll still probably get a wrong answer. But you know what, who cares?