Непонятное поведение module.exports в NodeJS
Я не силен в javascript, но попробуйте так:var controllers = {};
var User = require('./controllers/user');
var Account = require('./controllers/account');
controllers.user = new User();
controllers.account = new Account();
console.log(controllers.user.foo);
Все правильно, this в вашем примере ссылается не на объект, а на module.exports. А что вы пытаетесь сделать?UPD:
Не факт, что так нужно было, не понятна задача, что нужно было сделать? В зависимости от задачи можно заменить this.variable = "value" на замыкание:// user.js
module.exports = function() {
	var foo = 'bar';
	var fn = function() {
		// тут будет доступно значение foo = 'bar'
		return foo;
	}
	return fn;
}
И account.js по аналогии
Потом можно вызывать:var controllers = {};
controllers.user = require('./controllers/user')(); // обратите внимание на ()
controllers.account = require('./controllers/account')();
console.log(controllers.user()); // bar
console.log(controllers.account()); // baz
Таким образом, нет порождения новых объектов, но переменные сохраняются в замыканиях и оттуда возвращаются функциями.
Другой вариант, интереснее для вашего случая:// user.js
module.exports = { foo:  'bar' };
И account.js по аналогии
Потом можно вызывать:var controllers = {};
controllers.user = require('./controllers/user');
controllers.account = require('./controllers/account');
console.log(controllers.user.foo); // bar
console.log(controllers.account.foo); // baz
Но по вашему коду видно, что вы еще не определились что такое user и account - это функции или прототипы? Это контроллеры или модели? Советую не использовать слова контроллер и модель, пока не определитесь, что это такое.