Finding the right settings is a relatively slow process. Also, finding the right values for 80% of the settings is fast, but fiddling with the rest can take time. Trying something new also becomes harder.
For the vast majority of user-facing programs, run-time configuration is a must. A fancy GUI for it might be superfluous; a simple text file / command-line way to set options should always be available.
This sort of rules out binary distributions, or changing settings on a remote machine where you don't have the build dependencies installed. The latter may be irrelevant for a terminal emulator, but not for the general case.
In my experience if one can edit config files on a system, one has room to install a minimal C compiler. And one can distribute things in a binary form even if the config requires compilation. Consider distributing an application as a library or object files when the target machine needs to compile and link only the config file.
The difference between a config file that's dynamically loaded and a file that is compiled in is surprisingly small, as long as the compile times are very fast. First noticed that when using XMonad: one shortcut to recompile it and reload it, that's just as fast as editing configuration of any other window manager.
For the vast majority of user-facing programs, run-time configuration is a must. A fancy GUI for it might be superfluous; a simple text file / command-line way to set options should always be available.