I agree with the premise, but I disagree with the examples provided. I don't view switching from Javascript client code to Python or C# server code to be a context switch. What is a context switch is switching to a different type of task (e.g. looking up documentation, talking to a co-worker, etc.).
Another point is that the cost of the context switch isn't automatically higher than other costs when programming. Yeah, you might save on a context switch by running your shell inside emacs. However, that savings may be more than canceled out by the fact that you have to learn a new environment. In other words, if you're already very productive with the shell as it is, you might be better off taking the hit of the context switch, as it'll be less costly than your lowered productivity from running the shell inside emacs.
Context-switching is slow, yes, but in the first example the cause of evilness is not context-switching, it's that you must program web apps' client side in JS.
http://joelonsoftware.com/articles/fog0000000022.html
http://snarfed.org/why_i_run_shells_inside_emacs
http://itc.conversationsnetwork.org/shows/detail4911.html