Selecting the correct word for the correct usage has been quite difficult for non-native speakers of English. For example, in many countries people still do not know how to use certain words such as (salon - saloon) and (taxi - limousine). In my country, for example, saloon means barber's -): and people usually hail a limo not a taxi. Can you tell how this phenomenon grew in my society?
By the way, most of English teachers -here- misuse these words although they aren't homophones.
It seems to me that localised use of language is a phenomenon that occurs everywhere. Basically people use words and phrases that those around them understand. If the understanding is there then language has been succesful in it's primary aim... to communicate.
''Hail a taxi'' and ''call a cab'' both mean the same thing. Although a taxi driver might not want to be associated with a cab driver as they have a different status. The general public couldn't really care. They know what they want.