¿Cómo requiere trabajar con un nuevo operador en node.js?

Vamos a tener un archivo.js con este código:

module.exports.func = function(txt) {
    this.a = 1;
    this.b = 2;
    console.log(txt, this);
    return this;
}

Ahora tenemos otro archivo JS donde hacemos lo siguiente:

var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');

En el caso de r1, funciona según lo previsto: r1 contiene una referencia al objeto recién creado.

En el caso de r2, no funciona: r2 obtiene una referencia a module.exports desde dentro de file.js.

La intención era crear un nuevo objeto llamando al constructor func (). Claro, puedo hacerlo también de esta manera que es igual a r1:

var r3 = require('./file');
var r4 = new r3.func('r1');

Sin embargo, no entiendo por qué r2 no se comporta de la misma manera que r1.

¿De qué manera el paréntesis adicional alrededor de ('./ archivo') hace una diferencia?