commands are executables of the form 'git-<command>' in specific directory:
$ git --exec-path
/usr/local/Cellar/git/1.9.0/libexec/git-core
$ ls $(git --exec-path) | head
git
git-add
git-add--interactive
git-am
git-annotate
git-apply
git-archimport
git-archive
git-bisect
git-bisect--helper
In git's earlier years, it was just a set of git-<command> commands in $PATH, until the master git command was created (to 'rule them all' if you will).
git will actually pick up anything in $PATH of the form 'git-<command>' and allow you to run it as 'git <command>'. The downside of this, is that commands of the form:
git <command> --help
are intercepted by git and converted to:
man git-<command>
So your command cannot process the --help option itself when called like this (or it used to be this way a couple of years ago).
Edit: Another downside, is that some 'smart' command-line completion settings either have a hard-coded list of 'git <command>' commands, or look for said commands in the value returned by 'git --exec-path'. So you can't tab-complete git-<command> commands that you just drop into $PATH (at least not out of the box).