The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…
I used to have a jokes tab on my iGoogle page, one day the joke of the day was: "If you want you computer to work, use a mac, if you want to know how you computer works, use linux, and if you don't want to know why your computer doesn't work, use windows." I thought it was funny, and it was a step in my inspiration to use Linux.
One analogy I'll make to promote learning on Linux: When I started playing guitar, any experienced player or teacher will tell you to learn on an acoustic guitar. Why? It's more challenging to make it sound good, you have to press harder on the strings, The strings are further away from the frets, you get buzz and damping if you don't use just the right form. It teaches you to over learn, then when you switch to an electric, it's easy peasy, and just sounds sooo good. I think in this case you could consider Linux to be the acoustic guitar, and Mac to be an electric. Just my two cents.