It's 2017 and I had the same question in mind. What I found as an answer after some reading:
"The simplest way to perform an explicit type conversion is to use the Boolean() , Number() , String() , or Object() functions. We’ve already seen these functions as constructors for wrapper objects. When invoked without the new operator, however, they work as conversion functions and perform type conversions.."
"The built-in classes of core JavaScript attempt
valueOf() conversion before toString() conversion, except for the Date class,
which performs toString() conversion."
So Date() invoked without the new keyword performs a type conversion. And since Date is an object and an object-to-primitive should happen, date objects by default call toString() (though Date has meaningful valueOf() method as well).
Found that on the "JavaScript: The Definitive Guide" book. Leaving it here for the future generations who have just started learning JS :)