Given the history of web development, dynamic languages became widely used mainly out of ignorance, and have remained widely used due to continuing ignorance. There's no technical argument in favor of dynamic languages. They're just used because their users and proponents often don't even know about how much better and easier static languages make the development of both small and large applications.
While I agree with much of your comment, I believe there are reasons for the continued use of scripting languages in web dev, other than ignorance or stupidity.
The web moves fast, and scripting languages, with their lack of compile-run cycle allow quicker development. Things change enough that this is often worth the corresponding drop in execution speed.
Secondly, the widely-used statically-typed languages (Java, C#) are about as non-DRY as you can get, Java in particular. While static typing does not necessitate needless boilerplate, the languages that remove it are only now starting to gain acceptance, and haven't gotten a firm hold on the market (or strong communities) yet.
Thirdly, shared web hosts (where the majority of small businesses and personal sites are hosted) often don't support much other than static files and PHP, possibly ASP (.NET or otherwise, I haven't checked in a while). I've recently switched to doing a lot more static sites generated by Jekyll, simply because GitHub will host it for me for free (and only having to push my git commits to deploy is nice, too). Hosting matters.
Finally, I find that community is far more important than the language itself, and the innovating part of the web community is a fickle beast, but tends to stay in the realm of dynamically-typed languages. It takes a few years to get something roughly as nice as Rails (well... other people like it) or Django, and years are decades in our field. Things like HAML have been ported to .NET and Java, but the development's done in Ruby.