The largest advantage of Scratch is the immediate results and the mixture of multimedia content that can be done with literally just a single click of a button. It can be extended to further complexity just one or two mouse clicks at a time.
I disagree that multimedia and "click of a button" should be the goal when teaching children. Rather, I think that teaching them the computational process, and how to structure their thoughts, should be the goals.
For this, I completely disagree that Python is a viable replacement or even worse something that should be done instead of Scratch. Don't get me wrong, Python is a fine computer programming language and perhaps as a 2nd language to teach a kid it might be very useful. It is just lousy as an introductory environment for somebody in grade school or junior high school to learn the basic concepts of computer programming.
The other fun thing about Scratch that beats Python hands down is that Scratch is also multi-threaded with parallel processes happening as a major feature of the language. Kids doing stuff in Scratch don't even realize they are doing that kind of stuff until it is pointed out that some program/project they are making has nearly a dozen threads and even more event handlers being used. I don't see Python being nearly so easy to introduce such concepts.
Again, I disagree. Scratch seems to be hiding so much away that one can write a multithreaded application without realizing it? How does that teach structured thought processes?
If the goal is to get whiz-bang graphics out the door quickly, the Scratch sounds great. If the goal is to teach a fun, productive hobby that could turn into a profession, then it sounds terrible. I suppose that the choice depends on one's goals.