The exclusion of the initial - from optarch strings is a confusing historical mistake. It looks especially weird when multiple flags are used, as it just append the initial -, so one ends up with stuff like
optarch = "march=x86-64 -mtune=generic"
which is just odd. If we also try to expand this into other compilers, Java, Rust, Go etc, we'd end up with things like C target-cpu=generic for Rust etc, which really just looks really strange.
At the same time, looking at multiple different compilers nvhpc vs gcc vs intel which don't have a unified set of flags (as well as more languages like Rust and Go where flags are completely different per compiler), we really don't have any chance of specifying general optarch; only the per-compiler version makes can work in general.