This is probably the best advice for linux/unix nubs; you will never learn what a computer is really for until you meet the machine face-to-face via a terminal. I don't know how many times it took me to corrupt my package-manager or butcher some config file until I realized the advantages of running a VM, but, yes, the article is spot-on because all learning, or understanding for that matter, is iterating failure.
I like your shaving metaphor, but how is a new user coming from a Windows XP ever going to respect what an admin account can really do w/o ever test-driving what root can really do, given that I'm sure most Windows users are running as an Administrator. I guess my point is, given all the times I've screwed myself w/ root, is that root is only dangerous in context of somebody else, while the only cost of seeing what something does in Linux is your time and your file-system. Otherwise, how can one ever appreciate how delicate and fragile a system really is w/o a loving system administrator to cradle her in his key-strokes. ;)
Or, they could get hit by script kiddies that keep looking for old vulnerabilities in some daemon they ran as root.
$ cat /var/log/authlog
...
Sep 13 16:57:31 lucien sshd[16283]: Invalid user webmaster from 218.234.21.151
Sep 13 16:57:31 lucien sshd[290]: input_userauth_request: invalid user webmaster
Sep 13 16:57:31 lucien sshd[16283]: Failed password for invalid user webmaster from 218.234.21.151 port 56992 ssh2
Sep 13 16:57:31 lucien sshd[290]: Received disconnect from 218.234.21.151: 11: Bye Bye
Sep 13 16:57:34 lucien sshd[12747]: User root from 218.234.21.151 not allowed because not listed in AllowUsers
Sep 13 16:57:34 lucien sshd[2144]: input_userauth_request: invalid user root
Sep 13 16:57:34 lucien sshd[12747]: Failed password for invalid user root from 218.234.21.151 port 57162 ssh2
Sep 13 16:57:34 lucien sshd[2144]: Received disconnect from 218.234.21.151: 11: Bye Bye
Sep 13 16:57:36 lucien sshd[20586]: Invalid user ftp from 218.234.21.151
Sep 13 16:57:36 lucien sshd[3604]: input_userauth_request: invalid user ftp
Sep 13 16:57:36 lucien sshd[20586]: Failed password for invalid user ftp from 218.234.21.151 port 57344 ssh2
Sep 13 16:57:37 lucien sshd[3604]: Received disconnect from 218.234.21.151: 11: Bye Bye
Sep 13 16:57:39 lucien sshd[14276]: Invalid user sales from 218.234.21.151
Sep 13 16:57:39 lucien sshd[25572]: input_userauth_request: invalid user sales
Sep 13 16:57:39 lucien sshd[14276]: Failed password for invalid user sales from 218.234.21.151 port 57514 ssh2
Sep 13 16:57:40 lucien sshd[25572]: Received disconnect from 218.234.21.151: 11: Bye Bye
...
(My firewall blocks these losers after two minutes and I still have endless logs like this.)
It's all just an abstraction. You could sub in any of the other layers of abstraction in place of "terminal" and it would make just as much (and little) sense.