From my experience seeing others use Scratch, part of its value is the ease with which it can be used to tell interactive, visual stories. Programming in Scratch is a means to tell a story, not an end in itself. If you're using Scratch to teach recursion, then you're using it wrong.
Another high point of Scratch is that it includes message passing and concurrency. This allows for telling complicated stories, and it also introduces some very hard to track bugs -- so, kids learn some debugging as well.