Official upgrades to languages don't result in that kind of combinational explosion of language extension combinations because the features eventually become standard. They do result in a combinational explosion of
language feature combinations, though, so there's still a problem with languages just getting big. IDE's and other language tools need to support it too.
In JavaScript there is .js, .ts, .jsx, and .tsx. I hope that doesn't become a lot more, but for low amounts of variation, it's reasonable.
I think Haskell is a good example of what happens when a language supports too many extensions. Why are there so many? How do people deal with them all? Needing to pick another file extension seems like pressure to do this more sparingly?