I've worked with kids from elementary to high school age. One of the obstacles for getting nearly any kid into coding is conditioning their response to things like syntax errors and the other obtuse-looking things compilers and interpreters like to spit out.
For example, a kid can spend an hour adding a tree of dialogue to their text-based dungeon crawler, only to get a compilation error they've never seen before. They might have forgotten a curly brace somewhere and I'll help them find it, then they give it another go only to find out they forgot a semicolon or misspelled a variable name. That series of events can be pretty demoralizing, and it takes some coaching to get them through.
The above is obviously a teachable moment to test early and often, but the point is kids often lose motivation in the face of errors they don't yet know how to interpret. On the other hand, kids get really interested when they can see the fruits of their labor come to life, which can happen without a lot of friction in Scratch.
So to give students a taste for that success without the slog through syntax errors and stuff, things like Scratch are fantastic. Especially for younger kids where attention span and getting bored or disinterested come more easily. We quickly move on to real languages, though, and the concepts they picked up in Scratch are easily portable to Python or whatever else.