Toutes les réponses semblent se concentrer sur l'Inde, alors j'ai pensé donner une explication plus globale.
Chaque réseau mobile possède un code de pays mobile (MCC) et un code de réseau mobile (MNC). Une carte SIM a un seul réseau d'origine, qui est identifié par un tuple MCC/MNC, une combinaison de ces deux codes. Un réseau itinérant est identifié par un n-uplet MCC/MNC différent.
En général, un seul opérateur utilise un seul tuple MCC/MNC, et le même réseau est utilisé pour toutes les cartes SIM. Toutefois, dans certains cas, un réseau peut utiliser le réseau d'un autre opérateur tout en faisant office de réseau domestique. C'est généralement le cas des MVNO (Mobile Virtual Network Operators). Ils louent le réseau du propriétaire actuel sous leur propre marque. Le finlandais Saunalahti, qui loue le réseau d'Elisa, en est un exemple.
En Inde (et dans quelques autres grands pays), chaque cercle a un MNC distinct pour chaque transporteur, ce qui donne la situation que vous avez décrite. Si une carte SIM a un réseau domestique dans un cercle (par exemple, Vodafone à Chennai a le MCC/MNC 404/84), lorsque le téléphone se déplace vers un autre cercle (par exemple, Karnataka 404/86), le tuple ne correspond pas et l'itinérance est indiquée. Cependant, comme les deux réseaux 86 et 84 sont ceux de Vodafone, aucun frais d'itinérance n'est ajouté.
Si le téléphone indique l'itinérance même dans votre réseau/région d'origine, il est possible que la carte SIM possède le mauvais tuple MCC/MNC du réseau d'origine du cercle.
Les différences entre les appareils peuvent se produire si certains appareils vérifient le HLR (Home Location Register) de l'opérateur pour voir si la carte SIM est dans un réseau "domestique" (c'est-à-dire un MCC/MNC différent mais le même opérateur) et certains sautent aux conclusions en se basant uniquement sur les valeurs MCC/MNC.
Références :