That's an old design: if the input matches exactly the standard name, it will return the entity by itself. If the input is not a valid standard name, it will try to find the possible entities the input refers to. In the second case you could have asked without the region for example:
In[1]:= CityData[{"Bangbu", "China"}]
Out[1]= {Entity["City", {"Bengbu", "Anhui", "China"}]}
Of course, the answer would have been more than one if many cities have the same name, like with springfield cities:
In[2]:= CityData[{"springfield", "Wisconsin", "UnitedStates"}]
Out[128]= {Entity["City", {"Springfield", "Wisconsin", "UnitedStates"}],
Entity["City", {"SpringfieldStCroix", "Wisconsin", "UnitedStates"}],
Entity["City", {"SpringfieldMarquette", "Wisconsin", "UnitedStates"}],
Entity["City", {"SpringfieldJackson", "Wisconsin", "UnitedStates"}]}
In this last case I did input "springfield"
with lowercase instead of uppercase to avoid matching the exact standardname for the first entity.