I agree this is the way to go, we just haven’t gotten around to it yet, partially because the gun handling code is a bit of a mess.
In broad strokes, what seems to make sense and be most manageable:
Add a number of magazine items, at least one per ammo type, but in some cases different sizes and such. Some guns would have integrated magazines, which should probably be handled as a magazine item that can’t be removed from the gun.
Overhaul the reload logic to replace the current gun-mod based logic with handling these new magazine items.
Adjust gun spawning logic to normally spawn at least one magazine with each gun.
Adjust spawn lists to spawn magazines instead of gunmods, and probably some additional ones as well.
Update loading code to convert magazine-based gunmods into the equivalent magazine item, which might require some guessing, or might require a magic item that turns into a particular type of magazine when rounds are inserted into it.
Some misc details about reloading mechanics in a post I made quite a while ago: http://smf.cataclysmdda.com/index.php?topic=2032.msg27284#msg27284