This is a gripe I have with my current work project. All project scripts are written as bash functions and the convention is to just source a huge bash script to have them all available.
As the project has grown these bash functions have become more and more esoteric. Discoverability is not as good as could be expected from a cli tool with subcommands and simple help strings.
Additionally, I've found this setup has caused issues with various tooling that an executable cli tool would not have. For example, zellij layout commands do not run through a shell so you cannot specify a bash function/alias as a pane command.