I think the difference is how the value is parsed.
new Date('05-20-2015').toString();//parse the date using local time zone
new Date('2015-05-20').toString();//parses date as if it is in GMT
As you can see there is a difference of 5hrs between the given values
Date.parse()
Given a string representing a time, parse() returns the time value. It
accepts the RFC2822 / IETF date syntax (RFC2822 Section 3.3), e.g.
"Mon, 25 Dec 1995 13:30:00 GMT". It understands the continental US
time zone abbreviations, but for general use, use a time zone offset,
for example, "Mon, 25 Dec 1995 13:30:00 +0430" (4 hours, 30 minutes
east of the Greenwich meridian). If a time zone is not specified and
the string is in an ISO format recognized by ES5, UTC is assumed. GMT
and UTC are considered equivalent. The local time zone is used to
interpret arguments in RFC2822 Section 3.3 format (or any format not
recognized as ISO 8601 in ES5) that do not contain time zone
information.
Here 2015-05-20
is in ISO8601 format, SO it is processed using UTC timezone.
If you want the same result you can pass the timezone like new Date('2015-05-20 GMT-0500')