Programmer wants to solve a problem, writes some functions, can call them from main()
Programmer is also Sysadmin, can’t be bothered compiling stuff for every simple thing, so adds a CLI parser to call the different functions from main()
End user wants a GUI… but Sysadmin already has all they want on the CLI, so maybe someone puts up some GUI when they’re bored, or it really, really, really makes sense… or end user is SOL
It also has an easy explanation: