The great: Scratch has some hugely good things going for it. The community sharing model is ridiculously good. The ease of being able to jump in, put up a sprite and make it do something is super. It is so easy to go from kid-style ideas to something that happens on screen: "there is a castle, and a dragon, and it flies over and makes a noise...". They did a great job of making the sprite actors easy to use with a small number of programming blocks. The actor/message model is nice. Importing images and making them into objects is easy, and there is a big enough library of built-in actors to get you started.
The not-so-great: if you try to do something outside of the range of what Scratch really tried to make easy, it quickly gets hard. Moving 2d sprites around in simple patterns using built-in collision detection: peachy. Pretty much anything else: not so much. And as projects get large the block-based visual programming is a frustration. There is no text mode.
My wish: It would be great if someone would make a one-level-up version of scratch, with great community sharing features and sprite/object/message based library with super-easy graphics programming but text-based source code and with the ability for add-on libraries to be part of the ecosytem.