Basic idea is that you can easily setup complex animations by morphing easily between classes. Yes scriptaculous has this but try actually morphing between multiple classes and having it work smoothly. Here it works very easily with no hassle.
Animate element based on classes: element.animate(<classesToSet>)
Animate element by swapping set of classes for another: element.animateSwap(<classesToRemove>, <classesToAdd>)