IMO the proposed solution is not good. A common solution to your problem is:
- version control all "supporting files." If you care whether these file are modified or deleted then they should be under version control
- don't version control "binary files," if they are simply generated by the compilation process. The code that is compiled and the Makefiles are what matter. You might possibly have binary files in say a 'bin' folder if they are used to compile the code.
- create a build process around the package that you want to deliver to the client. You can either build a package for the client which they can access, or you can have them run your "package script" themselves. The "package script" can clone the repo, build the package, and delete the repo just by executing it on the command line.
To learn more about the git branching model and and how they apply to development check out http://git-scm.com/book/en/Git-Branching