I can't speak as a coder, but if there are (for instance) 3 different .tga's (even with the same name and data) then the game will load it into 3 different data blocks (memory space x3), because it has no way to know that it's the same.
On the other hand, you'll notice that the archer and the arrow share the same texture and both reference the same file. As a result, the game loads it into a single data block and references that particular memory space whenever it's needed for either model - thus saving memory. The same thing for technician's sounds being used for multiple (technician-based) units such as the ornithopter.
I utilized a similar technique for the .xml structure of my eaglestone mod. I had a unit directory that I named "shared" and any files that more than one unit used would reference the file from the shared directory structure (ie. shared/sounds/something_die.mp3). I had to create a fake unit .xml that wasn't available or functional in the game otherwise glest would crash looking for the unit (since there was a directory). But the main benefit is that I didn't have to remember that file X was under the archer's directory while file Y was under the technician's directory! It would always be under //shared/whateverIneeded
edit: For your needs, you'd probably need to hand-input an alternative filename for the texture for a couple of the model's so all models point to a single .tga. You should be able to do this when converting the .xml into the .g3d.