NULLは0や””との違いを説明するのが面倒だから禁止にしたのだろう。
大学なんぞ専門学部でも無い限り基礎しか教えない。
文字列操作以外は知らなくても何とかなる。
文字列はきついので「できるだけ」と言ったのだろう。

gotoは知らなくても問題無いし、実際俺も使わないようにしてるので
禁止というのはよくわかる。

do whileも無くても問題ないしDQNが使うとバグの元になるから敬遠してるのだろう。
上級者でも疲れてたりするとたまーーに間違うし。

switchは知ってた方がいいと思うが、知らなくても力技で何とかなるし
ifで複雑な分岐をする場合に耐性がついていいと考えたのだろう。
深いネストは慣れていないと錯乱する。
深くネストするな、という議論もあるかもしれんが。

以上、勝手な想像。