See my thread on the rebuild of colonization for that bit.
And I think, a Cargo bay should just be designated whatever leftover volume the ship has after all other modules.
This will solve two issues. 1: Not having to purchase cargo bays. Since all a cargo bay really is, is empty space. 2: It'll allow you to make use of every last iota of space.
Picture you have 1900 units of volume left. A cargo bay 'module' takes up 1000 units. Now you have 900 units of dead volume. Empty space. Why can you not stuff anything in there?
So just make the empty volume act as the cargo volume. This will allow all ships to have at least a LITTLE cargo volume... considering nobody ever completely fills their ships up.
Ah well I was thinking more realistic in a sense, though I know games aren't 100% that anyways. I mean, if you have 2000 volume of space, and you dedicate a cargobay 'room' you can store X amount. Of course the cargobay can 'eat up' some space in general too like you said. But I wasn't thinking you could use ALL the extra space because it would be like tucking cargo in every little corner of your ship that you can see.
Overall if we DO it the way like you proposed, there won't be a need for a cargo module for X amount of room. I'd most likely just code it to store in the extra space of the ship rather then making a module. Mainly the module thing was just to be more realistic in general that they'd have a specific 'area' to store stuff (X amount of room.)