операторы
Как видите 
function call ниже оператора new, и если выделить скобками вашу запись, то интерпретатор делает следующее — 
var model1 = (new require('./test/model1'))();
Функция require отработает хорошo, даже не зависимо от какого контекста была вызвана — а последующий 
function call будет уже в контексте 
global 
self == model1 == model2 == global
Разные решения:
var module = new (require('module'))();
// екзотические варианты -
var module = new require('module').prototype.constructor();
var module = new new require('module')();