We need to remember that the Masoretic pronunciation (which pronounced both
kamatz vowels identically) was not the only Hebrew pronunciation at the
time. At the same time that the Masoretes vocalized the Tanakh per their
pronunciation (I suppose, the pronunciation that was used in the northern
part of the Land of Israel) two other vowel systems have developed, based on
pronunciations that were different from that of the Masoretes. The one
developed in the center part of the Land of Israel (called the Yisraeli
(formerly "Palestinian") vowel system) and the Babylonian vowel system.
Both of these systems had not only different vowel symbols but were actually
different pronunciations. The Sephardi pronunciation, which retained the
etymological origin of the two Kamatz vowels is based on the Yisraeli
pronunciation, even though all accepted the Masoretic vowel signs. This is
exactly why we have the "problem" of one symbols for two distinct vowels.
So the etymological basis for kamatz katan was not forgotten -- it was kept
intact by Sepharadim in their Hebrew pronunciation, and have later become
the basis of these vowels in modern Hebrew.
The "environmental" explanation is merely a "technical" framework; it's a
useful rule, but it doesn't explain why we have in Sephardi and Israeli
Hebrew two different vowels with the same symbol; it doesn't address
"exceptions" (which are not really exceptions if one looks at the word
etymology rather that strict adherence to rules); and is not consistent
with language development.
I find it difficult to accept your explanation of kamatz katan as a "vulgar"
presentation of certain kmatzim since the fact (i.e. the etymological basis
of vowels) is so clearly present in the Sephardi pronunciation. It is well
known that the Sepharadim kept throughout the generations the
differentiation between the two vowels, even though they used the same
symbol for both, because they accepted the Masoretic nikkud.