OK, speaking as an ignorant person here, I'm struggling to find ways that Dynamic Java is anything but an inferior version of beanshell. What am I missing?
There is a big difference between DJ and beanshell 1.x - in DJ you are able to define new classes, while in beanshell you are just able to implement interfaces using Proxy. AFAIK, in beanshell 2 you have full support for compilation, including defining new classes - so it is a superset of DJ (but DJ is not longer actively developed, is it ?).
Anyway, DJ allowed you to define classes few years before beanshell - and this was a reason for it to exist

Currently, it can probably die silently, forgotten in depths of internet.
For me, there are two scripting choices: Beanshell if you want something small and easy, and Groovy, if you want something with all kinds of expresiveness possible to scripting.