Во многих, даже в большинстве задач, где узким местом не является производительность интерпретатора/рантайма языка, основное преимущество одно: на динамических языках могут писать те программисты, которые не могут на статических. Не в смысле не могут выучить или не понимают, а в смысле - совершенно не хотят. Это что-то такое глубокое в сознании программиста, от чего зависит его выбор динамической/статической типизации (и соотв. языка). Я все больше убеждаюсь, что в зависимости от варианта типизации, программисты, выбравшие для себя "правильный" язык, пишут гораздо более эффективный код.
У меня, как и у того разработчика из Яндекса (по ссылке в ответе
beduin01 ), слишком плохая память для разработки на динамическом языке. Я не могу держать много сущностей в своей голове, чтобы эффективно и правильно использовать динамические языки. Я привык и не могу без хоть каких-нибудь проверок на стадии компиляции (и чем больше, тем лучше).
Другие считают ограничения статической типизации идиотскими, необходимость создавать всякие непонятные "интерфейсы", чтобы поиметь абстракцию и полиморфное поведение - извращением. Они чувствуют себя легко с объектами и классами. Возможность "прикрутить" любое свойство или метод к существующему объекту вдохновляет их на нестандартные и эффективные архитектурные и инфраструктурные решения.
Видимо это действительно зависит от особенностей памяти и сознания конкретного человека.
Разумеется, есть масса технических различий, почитайте остальные ответы.