Because it manipulated the hash component directly.
By using the "replaceState" method of the history API [1] you could avoid polluting the browser's history.
[1] https://developer.mozilla.org/en-US/docs/Web/API/History_API
[1] https://developer.mozilla.org/en-US/docs/Web/API/History_API
For the Chrome part in any case it doesn't match my experience: under linux Chrome will happily update the url up to every 20ms (50Hz). At higher frequency it will throttle it saying that otherwise the UI would hang. The limit on Safari (which I cannot test) can be annoying in fact, but not as much as an URL updating 20 times per second :-)
By the way I also find the other reason for not using the History API to be a non-issue, since you can just use the location object to build the whole url from scratch, if you really want to