Everett, you might take a look at the new version of MyComponent (
http://bobsguides.com/mycomponent-tutorial.html). If you just install it and run Bootstrap, it will create the Example project in assets/mycomponents/example/. That's a pretty standard structure and the one I always use for my extras. Shaun and Mark use a very similar structure.
If you use MyComponent, even just to get your project off the ground, you won't have to worry about where to put things. Once you edit the config file, it will put everything in a standard place and will create skeleton files for you to use.
You put the git repo in assets/mycomponent/name_of_your_component, which is the root directory of your project. If you look at
http://github.com/splittingred you'll see that all the repos are organized the same way. I think Mark's are the same way, as are mine, with a minor exception for the recent ones.
The only difference in mine is that in the ones I've done with MyComponent, there's a separate directory under _build/data/ for each category. The elements in each category are under their category. It's a minor difference and it has no effect on the "real" assets and core directories which get transferred in the package. I do it so that a project can have multiple categories. The result, and I can't stress this enough, is that every package has the exact same build.transport.php file (no really). It can be customized, but it's almost never necessary. MyComponent will also create your lexicon files for you complete with language strings (no, really).
Shaun's trick with the System Setting for the component's core path works very well with this structure for including classes. Here's an example:
$path = $modx->getOption('newspublisher.core_path', null, $modx->getOption('core_path') . 'components/newspublisher/') . 'model/newspublisher/newspublisher.class.php';
When the package is installed, that System Setting doesn't exist so the class is loaded from core/components/newspublisher/model/newspublisher/. In my dev. environment, it's loaded from
assets/mycomponents/newspublisher/core/components/newspublisher/model/newspublisher/
To get back to your main question, I have not had good luck developing with static elements. They just don't play well with Git for me. I'm always committing stuff that I didn't want to commit and vice versa. I also occasionally lose work altogether.
The MyComponent solution to your question is two utilities: ExportObjects and ImportObjects. The first one takes what you have in MODX and updates the code and build files in your development dir. The second one does the opposite, it updates what's in MODX from the content of your development files. They are very quick and can be run from inside your code editor or from within MODX.
I use ImportObjects and ExportObjects for Chunks, Templates, and TVs, which don't actually change that often for me.
For snippets and plugins, I use something like this:
return include 'c:/xampp/htdocs/addons/assets/mycomponents/newspublisher/core/components/newspublisher/elements/snippets/newspublisher.snippet.php';
That way, the code for the snippets and plugins only exists in one place during development. In the newest version of MyComponent (not out yet), those files are ignored during ExportObjects (as are static elements) because the disk file is always up to date.
I hope that all makes sense.