何か問題があったとして
それがRubyだけの固有の問題かどうかは、割とどうでもよい
ざっくりというと、動的型言語はどれも同じような問題にぶち当たってる

元々は多少マシンのリソースを食ってもプログラマが楽できた方が良い
とかいうユルフワな考えもあったんだろうけど
実際にはプログラマは楽できないし、マシンに負荷がかかるだけだった
動的型で楽できたのは言語を開発する側だけ
(それも自分たちは静的型言語で静的型の恩恵を受けながら言語を開発してるという)
しかも、パフォーマンスとかコード補完とかマトモなことをやり始めると
むしろ静的型より難易度が上がるという
結局、言語開発者にも利用者にも機械にも、おおよそ誰にも優しくないのが動的型で
非常に筋の悪い、行き詰まった方式と言える

また、文法の面からみても、変数宣言が無いから変数スコープがぐちゃぐちゃになるし
( もし変数スコープを明確にするために変数宣言を導入するんなら
(オプションかどうかは置いておいて)型がかけても良いんじゃね?という発想に至る←通常は )
元々変数宣言が無い言語に後からオプションで型宣言を入れるなら
これは本当にダサくて、それをやっても、後付け故に変数スコープはグチャグチャのままで
だったら初めから変数宣言導入しとけって感じ