Nous sommes en 2017 et j'avais la même question en tête. Ce que j'ai trouvé comme réponse après quelques lectures :
"La façon la plus simple d'effectuer une conversion de type explicite est d'utiliser les fonctions Boolean() , Number() , String() , ou Object() . Nous avons déjà vu ces fonctions comme constructeurs d'objets enveloppants. Cependant, lorsqu'elles sont invoquées sans l'opérateur new, elles fonctionnent comme des fonctions de conversion et effectuent des conversions de type "
"Les classes intégrées du noyau JavaScript tentent la conversion valueOf() avant la conversion toString(), sauf pour la classe Date qui effectue la conversion toString()."
Ainsi, Date() invoqué sans le mot clé new effectue une conversion de type. Et puisque Date est un objet et qu'une conversion d'objet à primitif devrait se produire, les objets date appellent par défaut toString() (bien que Date dispose également d'une méthode valueOf() significative).
J'ai trouvé ça dans le livre "JavaScript : The Definitive Guide". Je le laisse ici pour les générations futures qui viennent de commencer à apprendre le JS :)