Hmm, those are language _features_ not language _extensions_, right?
And yes, I think the Rust comparison is a great one – I'm not the sort of person who would want to use nightly Rust and turn on feature flags; I'd want to use Stable rust with no extra features.
Extensions are just per-module importable language features.
These features have tradeoffs around usability and power, so making them importable defers that tradeoff to the end programmer, who is best positioned to make those decisions. It's kind of the opposite of the paternalistic approach the Go designers take.
This is just complaining about naming at this point. An "extension" must necessarily be extending the language with something. That something is a feature. When the GHC devs add a new feature to the language, they put it behind a flag and call it an extension. This is the only way features are added to GHC Haskell.