Mercurial with the large-files is similar to git-annex w/ the assistant. http://kiln.stackexchange.com/questions/4846/how-do-i-use-the-mercurial-largefiles-extension It's appropriately labeled a "feature of last resort" because it breaks the D in DVCS (as does git-annex), but that's what you're asking for. It works fine and is supported by Fog Creek (the folks bringing you this site to a first order approximation).
I spent 10 years in the CVS goulag. I respect you for considering it, but you don't want to go there. The first time someone pressed ctrl-C during a commit and leaves your repo in a half-committed state and you're picking through ,v
files trying to undo the damage you'll want to kick yourself. The first time someone wants UTF-8 Content without remembering to do -kb
or put UTF-8 in file names or (IIRC) tries to put a space in a file name you'll curse CVS.