I have several reasons for my custom make + stow + shell scripts:
* git status only shows me changes to config. Similarly it is easy to determine if I've forgotten to add something when adding a new config.
* accidentally adding giant directory trees to the repo is much, much harder - absentmindedly "cd .."ing one too many times and committing a bunch of proprietary work code causes a lot more work to cleanup than a lifetime of extra character strokes in "cd dotfiles/repo/dir && git commit -a".
* it allows me to have some goodies for the heterogeneous environments I compute in. Depending on if I'm on a mac or linux, if the machine is at home or work, a server or desktop, etc. I can tailor the subset of configs and details thereof. The net result is ironically a more consistent personal compute environment across systems.
* it allows me to store examples, notes, documentation, etc in my dotfiles repo without cluttering up my homedir
* i don't have to remember if config live in .prog, .prog/config, .config/prog/, etc
* it lets me store system setup scripts in my repo too. I can log onto (or install) a new machine and run my initialization script (os appropriate) and be 95% or moreready to go in a few moments. [note: things like vim + plugins, fontconfig, etc that need extra commands to set up are all automated in these], without always having those commands in my ~/bin path.
Overall, for me it boils down to: I get more control over my environment on multiple, different machines by using a bit of scripting in my dotfiles repo.