Yes, but programs that need more than 16 colors are already often doing this.
> Changing your color scheme means editing multiple config files.
Already has been implemented at least several times over.
> Light/dark switching requires explicit support from program maintainers.
Yes, we have an escape sequence to ask the terminal to ask the OS for this. Most programs that need to care about this already use it.
> Truecolor escape codes are longer and slower to parse.
Not in a way that matters. It only shows up on torture test benchmarks on especially slow parsers. It wouldn't effect normal usage even on a terminal running on some tiny SBC.
> Fewer terminals support truecolor.
XTerm itself, rxvt, iterm2, Alacritty, Wez, Kitty, Ghostty, wt/modern conhost, mintty, st, everything that uses libvte, everything that uses libvterm (such as neovim's built in term), emacs's term, asciinema; tmux, screen, dvtm safely handle them; the linux console snaps it to the nearest 256 color; iterm.app, the original garbage osx one, is the only major term I can think of that does not handle it.