At first I disliked them because I think they make the code harder to read, but in a lot of cases they make the code a lot easier/faster/nicer to write when you're in the flow!
The Right Answer™ to the question of "Why are these a thing" is going to be that their lexical scope is shared with their surroundings so you can use this without having to pass it into the function you're creating.
Where they seem to shine are in one-line functions, because you also don't need the { return } if it's one line, so things like map(), filter() and stuff like that which expects a function.
I also find it nice inside addEventListener:
document.addEventListener('resize', e => {} )
So it might be nice inside other things like setTimeout or setInterval, etc.
As for support though - I think life's too short to transpile a dynamically interpreted language so I only use them in situations where I know I won't need to support a browser that doesn't have them.
That said - there is nothing wrong with function() { return } syntax, and never will be :D