Well, EFR and AMR FR provides the same voice quality and uses the same capacity…
What Mahesh Kumar Singh has said could be true, but I don’t understand why a constructor would implement this. If the call is started in EFR, it cannot move to AMR anymore (within the same cell). It’s smarter to start it in AMR if possible, so it enjoys the possibility to switch become AMR sub-codecs quickly if needed.
Another possibility : perhaps your AMR license is limited : only a certain number of calls can use the AMR at the same time, in your network.