Okay, I've prepared a patch for this, based on Dimitriv's work. I've been using this for a while now and haven't run into any problems.

The attached patch is against the latest revision in the emacs-23 branch. I can provide a patch for emacs-24 or trunk if that's desirable.

Here's the patched version if you'd like to try it out:
https://gist.github.com/2849799

And here's one that should work in Emacs 24:
https://gist.github.com/2849595

There's still one thing that I'd like to behave differently, but I thought I'd best discuss this first.

The patched js.el will indent the following code like this:

var foo = 5,
      bar = function() {
      };

That's fine. But if a function or an object literal come first, it indents it like this:

var bar = function() {
},
    foo = 5;

Which I consider somewhat ugly. I'd like to make it indent as follows:

var bar = function() {
    },
    foo = 5;

That should only happen for multi var declarations, single declarations should indent just like before:

var bar = function() {
};

Would that be acceptable? It'll make the code a bit more complicated, but I think it's worth it.