It's important to download JS-generated data as well, such as something in a Blob. You can't set a HTTP header on local content. The 'download' attribute lets the user "download" that without having to wastefully post it to a server and back.
Even IE 11 has a way to do this (non-standard, of course, but it does have a way to do it :-). Edge supports the standard way.
As I noted in a different post, though, support for the download attribute has already landed in Webkit Nightly for macOS, and is apparently being worked on for iOS.