Arrays designed to be indexed by an enum is a pattern I use all the time in C and designated initializers make it a whole lot safer and reduce the likelihood of a bug when refactoring.
I don't know why the array notation is not allowed in C++.
Regarding all the restrictions added in C++20:
Clang supported the full C99 designated intiialization feature set in C++ without any issues long before C++20, so the decision by the C++ Committee to add those restrictions is quite baffling, considering that there is a solid implementation in the wild that has been working just fine for many years.
I can well deal with a little extra effort to order the initializations for those benefits.
Now, if you complained about the burden on refactoring member orders it poses on the other hand?