I think the one answer that can answer most questions surrounding older techniques in use by newer standard is because of legacy code and backwards compatibility. At the end of the day there will always be older code that needs to be ran by your browser, if we left support for polyfills off in ES6 then we would shatter a lot of websites. Beyond that, a lot of people decide (for whatever reason) not to update, things like polyfill can be used as legacy fall backs in the event a browser doesn't support a newer mechanic and instead requires something like polyfill to take it's place.