揚げ足取りですけど
http://d.hatena.ne.jp/lethevert/20060108/p6
末尾再帰を最適化する言語でも、forがないことはないんじゃないでしょうか。OCamlはforありますし。あるいはRubyも末尾再帰の最適化してるそうですし*1。ループの構文という意味なら、SchemeだってLispだってループ構文は一応あるわけですし。
forをなくすことができる説明は簡単なのですが、そこでforがない理由を説明するのは結局「そういう言語だから」と言うしかないのかなあ、と。
余談ですが、私がOCamlでプログラミングするときは、forは使ったことがありませんが、whileは「whileを使えばきれいに書けるな」と感じるときには躊躇せずに使います。