Uso de clases ES6 O objetos literales en controladores para una aplicación Express + NodeJS

Hay 2 cosas sobre las que estoy muy confundido.

¿Cuál es la ventaja de usar cualquiera de los literales de clase o de objeto ES6?

¿Y dónde debo usar alguno de ellos?

Algunos de los ejemplos que estoy probando se mencionan a continuación. Avíseme cuándo usar una forma particular de implementación y cuándo no.

Ejemplo de clase 1:

// auth.js
class Auth {
  login(req, res) {...}
  signup(req, res) {...}
}

module.exports = new Auth();

// index.js
const auth = require('auth');

Ejemplo de clase 2:

// auth.js
class Auth {
  login(req, res) {...}
  signup(req, res) {...}
}

module.exports = Auth;

// index.js
const Auth = require('auth');
const auth = new Auth();

Ejemplo literal de objeto:

// auth.js
module.exports = {
  login: (req, res) => {...},
  signup: (req, res) => {...}
};

// index.js
const auth = require('auth');

Lo que pienso al leer sobre ellos es que:

Ejemplo de clase 1:

No puede crear más de 1 objeto. Porque un módulo solo se ejecuta una vez. Por lo tanto, en cada importación obtendrá el mismo objeto. Algo similar al singleton. (Corrígeme aquí si lo entendí mal)

No podrá acceder a los métodos estáticos de la clase porque solo está exportando el objeto de la clase.

Ejemplo de clase 2:

Si tiene una clase que no contiene más que métodos auxiliares y el objeto no tiene ningún estado, no tiene sentido crear objetos de esta clase todo el tiempo. Por lo tanto, en el caso de las clases auxiliares, esto no debe usarse.

Ejemplo literal de objeto:

No puedes hacer herencia.

Se pasará el mismo objeto en cada requerimiento. (Corrígeme si me equivoco aquí también)

Por favor, ayúdenme a comprender estos conceptos, lo que me estoy perdiendo, lo que he entendido mal y qué se debe usar cuándo y dónde. Estaré muy agradecido por tu ayuda.

Siéntase libre de editar la pregunta, si cree que cometí un error en alguna parte.

Respuestas a la pregunta(2)

Su respuesta a la pregunta