The answer is as far as I know:
Backwards compatibility with bad decisions made in U2F
Also; relying on base64url is odd as there are no built in functions in JavaScript to encode and decode it.
I'm probably missing something, but aren't window.atob and window.btoa just that? It's not available in Node though.
The answer is as far as I know:
Backwards compatibility with bad decisions made in U2F
Also; relying on base64url is odd as there are no built in functions in JavaScript to encode and decode it.