Node.js is not a framework for developing web applications. Express.js is a framework for developing web applications on the Node.js platform. As per the question, I tend to go towards Node with Express. It doesn't do all the abstractions in terms of controllers and associations in models, though - so development is not as quick for trivial apps.
One reason I choose Node over Ruby/Rails is the Websocket libraries available in Node. Here's an example of why: I've been exploring a lot of JavaScript lately. Backbone.js is nice, but it doesn't have nice data-binding. Angular.js is really nice, but it's "templates" (directives) cannot be parsed by a server, so you couldn't serve the same content from the server. Ember is nice, but it's a little slow compared to the other frameworks (from my experience with it, I know it will improve).
I prefer Backbone + Handlebars because I can serve the same templates as views from the server if I adhere to a rule that essentially means each page of the app is a separate Backbone template associated with it's own view. These can still have subviews, but the client will handle that. The only thing I don't like is the data binding.
So, lately in my apps, I've found myself writing simple data binding "plugins". But instead of detecting regular events - I bring socket.io into the mix. This makes for really fast data binding, plus everyone can see the changes.
Having everything in JavaScript prevents me from straying between different programming languages and distracts me less, and for the socket work it just makes so much more sense to me.