Personally, i'm used to using a version control system, nowadays use Git
The Arduino IDE creates new subfolders under my ~/sketchbook, and it seems the most sensible idea to initialize a git repository for each of these directories.
For me, that level of granularity is too fine. I started with the sketchbook folder as one repository. The TortoiseGIT tools and tagging make it easy to search and mark significant events. By including the sketchbook libraries
folder with the sketches, I get a clean snapshot of each project without having to deal with sub-modules.
Now the folder above the sketchbook folder is the repository. The area above the sketchbook folder is used for general purpose things like personal notes, links to interesting projects, and datasheets.
It is fairly easy to have individual sketches (like TinyISP) that are "indepdenent" repositories so I can publish on GitHub while still maintaining them in the bigger Arduino repository.
I don't know if Arduino IDE ever creates more than one file though...
Tabs are placed in separate files.
I also would like to use some program to document the electronics for my Arduino projects.
Can't help with that. I'm using POPAP (plain old paper and pen).
Unfortunately Fritzing uses a binary file format (a zipped XML), and these are a little unconvenient with version control systems.
Only if you need to perform a three-way merge which is usually rare for an individual.