Flash is essentially a system for moving and manipulating sprites, which fits perfectly with a 2D game. HTML/JS is an overgrown document layout system, and it shows.
Which doesn't negate what you said at all, but like with everything else people do in Javascript, creating games with it will get less annoying over time as more people create things like that.
Then there are things like Pyjamas that let me write this silly asteroids game in really just a few hours: http://rumsey.org/space/Space.html. It's written entirely in Python (except it uses Flash for sound effects), but compiled to Javascript. I wrote that a couple of years ago, and haven't really followed Pyjamas since, but it was fun.
(and yes I know it's got errors depending on the browser, but it should work in anything but IE. I'm sure if I got a newer Pyjamas and recompiled it it would fix it for newer IE versions too.)
Right now it seems we're in the phase of tons of scattered libraries, all with their own pros/cons, often written by just one or two folk. But eventually something awesome will appear.
Technically it doesnt use flash, it's a language that gets translated to flash, and crap tons other languages. The language is built from ground up to be translated.
I am using it right now to develop a cross platform mobile game. It translates to c++ which runs virtually anywhere, and for android version it even takes advantage of NDK.
One surprising thing about it is that, this technology is old (in digital timespan) it's been around for 6 years and the NME engine, it's been around for 4 years, it still surprises me that no one knows about this.