According to the ECMA docs, the 'start' argument cannot be greater than the length of the array or it is set to the length of the array.
5 - Let relativeStart be ToInteger(start).
6 - If relativeStart is negative, let actualStart be max((len + relativeStart),0); else let actualStart be min(relativeStart, len).
http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.12
As for why exactly: I'm not sure, maybe they thought it would be counterintuitive if the method added items to the array.