Solidity não é de forma alguma uma linguagem perfeita, mas a maioria dessas queixas é aplicável a qualquer linguagem de programação de contratos inteligentes. Você sempre pode escrever código ineficiente. Você sempre pode introduzir muito facilmente vulnerabilidades críticas. Não culpe a varinha, culpe o mago.