I'm currently working with DerbyJS because it fosters clean, DRY client/server code. The side-benefit (main reason why most people use the framework) is it uses Socket.IO to create realtime apps. In this case, I don't need realtime, but it is a nice addition.
My question is - am I sacrificing scalability/performance by using Socket.IO, and all those open connections it maintains? Would using Backbone + ExpressJS free up resources since there are no open connections?
Keeping a bunch of open connections obviously has some cost in terms of server overhead, but I wouldn't worry about concerns like this unless you have an obvious scaling problem. Once you have an obvious scaling problem, you should have enough income to buy more server resources. Servers are very cheap and your time is very expensive. Don't worry about optimizing the small stuff.