After many tries I guess there simply isn't a universal method that just works out of the box with every Blender project (or with any project that involves cooperation) imaginable.
It all comes down to the nature of the project itself. Rendering still images or movies might have different requirements than creating game assets.
The universal texture folder might be a good idea at first glance, but once you start altering those textures (painting seams, baking dirt/worn edges) those textures become project- and even object-specific. So once you make changes to the base textures, you might them store in a project-specific area of your file system anyway.
Subfolders within the project folder keep things organized well enough within the Blender project, but they don't necessarily work for export to game engine formats.
Then there's always a difference between working on projects locally on your Computer, in a local network or over the Internet.
If you work locally on your Computer but still want to share the work with other people, you would at least have to share a method how to set up the project folder (that's nothing special to Blender). The same goes for office-like LAN setups, both should be well-organized.
Collaboration over the Internet is a whole different story. The first thing that comes to mind is "hey, let's set up a git/cvs/mercurial repo". It's a good idea in general although there are virtually no distributed version control systems that deal well enough with binary files out of the box (the only one I know of is Perforce but it's not free and requires good hardware to run well).
IMHO the best method to share your work Blender has to offer without any additional work is to pack external data into the .blend file itself. Once you've done that you won't have to think about what to pack into the repo or where and how to store data in a manner that it would work over all setups. The only thing you have to remember is to clean up your file every now and then.