I was going to write a long post about the connotations of ‘country’, ‘nation’, and ‘sovereign state’, but decided it was too pedantic. The short version is that in some sense the word ‘country’ often implies a geographic area where an ethnic group lives and which often but not always has its own government, and a state is an area which is governed by a particular entity, and they aren’t necessarily the same thing. England is a country, Bengal is a country, Russia is a country The United Kingdom is a state which includes the country of England, the Soviet Union was a state which included the country of Russia, and India and Bangladesh are states which include portions of Bengal. Since typically states are the entities which control post offices, it seems easy to create codes based on the names of states rather than countries.
This still feels a bit pedantic but I had a glass of wine so I’ll click the post button anyway. To some extent I am glossing over stuff but I think this hits some of the reasoning on why they may have chosen to go with GB instead of separate codes for the different parts of the UK.