¿Por qué un constructor solo puede devolver un objeto?

Si hay un constructor como

function a() {}

lueg

(new a) instanceof a === true

Pero en la otra mano

function a() { return {} }

resultados en

(new a) instanceof a === false

Así que lo que estaba pensando es que

function a() { return 123 }

resultaría en lo mismo. Sin embargo, al devolver un número,

(new a) instanceof a === true

¿Cómo es esto posible? ¿Por qué no puedo hacer que un constructor devuelva algo más que un Objeto?

(Sé que hacer que un constructor devuelva un Número es bastante inútil, pero me gustaría entender el 'por qué' de este comportamiento)

Respuestas a la pregunta(1)

Su respuesta a la pregunta