I generally agree but it depends on the application and the computer purpose / input you will most use.
Like.. it doesn't make much sense to have a CLI/TUI for an image editor.. if you start using things like sixel you are essentially building a GUI that runs in a terminal, not a TUI. The same happens with videogames, video players and related entertainment applications.
But like I said, I do generally agree. I'd even argue that when possible, GUIs should just be frontends that ultimately just call the corresponding CLI programs with the appropriate parameters, avoiding duplication.
BTW