Well, I think it's a misfeature. Jens might not.
This is the visible tip of a huge iceberg, which is about trying to be both a Scratch-like, quick-start language for even young kids vs. being a "grownup" language for experienced programmers.
In Scratch, lists are at the esoteric end of things, and not first class; 0, False, and the empty string are all interchangeable, at least in certain contexts. So having variables start with that 0-False-empty value makes sense and makes failing to initialize a variable not a bug, at least the first time you run the program. For beginners you can make the argument that it makes sense here, too.
At the other extreme, there are people, including some German CS professors and some forum teenagers, who want to be just like Java, with a ton of error checking and strict typing.
In between, but not midway between, my Berkeley colleague Dan Garcia wants a feature that would allow optional declaration of the return type of a function. He points out that we already have that for predicates, indicated by the hexagonal shape. And if a function does have a declared type, he wants it to be impossible to drop it into an input slot of a different type. So, you couldn't drop a function of type number into a slot of type list. (Not settled in this proposal, I think, is whether primitives would have pre-declared types, so you couldn't drop a + block into a list input slot.) He argues that when he's volunteer-teaching at his kid's middle school, that precise thing happens a lot, and catching it while building a script would be better than having to debug it when running the script.
I think it's fair to say that over the last decade we started with the principle that we'd be just as permissive as Scratch, and that over time we've taken tiny steps in the direction of type checking. Jens doesn't like runtime error checks because they slow down even correct programs, but a "compile time" (script-building time) check might, from that perspective, be better. My first timid toe in the water was asking for a specific error message for trying to take the first item, or all but first, of an empty list, instead of getting some inscrutable JS error, because that situation often means you forgot the base case test in a recursive function, and I want the error message to say so.
Anyway, we keep relitigating these questions because there's no clear right answer.