The UK codes have an ICAO Region, Country, and Country region element, which actually only leaves only one letter for individual allocation.
Now of course if we had a single letter for both region and country then we could adopt the US system, but since our ICAO region consists of more than a few countries it's not going to happen. The IATA codes would also soon run out if every airfield with an ICAO code was given an IATA one.
Guess ICAO was formed before IATA and represents more of the industry so 'Grandfather' rights should apply