Significance of model in arithmetic coding

I am trying to understand the concept of arithmetic coding, i understand how the range is subdivided after each character is read from the string. But i am unable to understand why using a more accurate model compresses the string. Whether the model is static/adaptive either way the number of characters in the compressed string would be the same. What am i missing?