I think the main advantage of the rapid development languages is dynamic typing, where you do not have to put in any effort for static types, as e.g. in Java's
public List<Tree<N extends Iterator, E super Interface1 & Interface2>>
= new ArrayList<Tree<N extends Iterator, E super Interface1 & Interface2>>();
... and later on think about type erasure.
With dynamically typed languages, you do not have that concern, but can quickly duck-type away. That's faster and often results in more readable code (less type information/noise, see example above). You do need thorough tests, though, but with TDD & documentations via tests, they are nowadays usually written anyways.
And now to some historical examples about statically vs. dynamically typed languages ;)
When the discontent with C++ grew, the dynamically typed language Smalltalk was getting more popular. But then Java came along. Although Smalltalk had good testing techniques already (xUnit was born in the Smalltalk field), thorough testing got popular only later. I think that is the reason for the rise of dynamic languages now. You do need very thorough tests there because e.g. a simple typo in a message call is only detected at runtime.
But maybe now that type inference gets better, we'll have a similar situation again and Scala will thwart the second rise of dynamic languages ;)
Update: I found this thorough programmers.stackexchange post about static vs. dynamic typing. It lists a lot of papers to read, and also considers productivity.