Alternatively, you can say that file exension is metadata distinct from the name
No you can't. They are set and read together in both the primary APIs, and virtually every UI.
And yes, it is a crappy way to do it, but it's the one that became the de facto standard. Changing it now is very costly, and cannot be done unilaterally.
Oh it'll certainly change. It's just a matter of when. The precursors are already there. UIs hiding the file extensions from users. Internet protocols using mime types rather than file extensions.
It'd certainly be perfectly possible to have an OS and file system right now that did it and interoperated perfectly well with the rest of the world. It's just a matter of defaulting to file extensions when communicating with something dumb.