I do not argue that most programming languages stick with numeric types that are specifically limited in size. Feels like that is a mechanical choice, though? Not an encoding one. As evidence by the fact that different machines have different limits based on the physical size of the adders on them.
I should also say this was a really fun read!
It just depends on the specific encoding you use. GMP, I believe, is only limited by the physical memory size. Python's implementation is also limited by the encoding (not sure how it works concretely, but it doesn't seem to be a memory overflow):
x = 1
while True:
x <<= x
> OverflowError: too many digits in integerAnd at least for most languages, the size limit has somewhat intuitive upper size limits. JavaScript has the odd case where larger numbers start skipping in different ways. (If my memory is accurate, at least.)
This also applies to small numbers and small mechanical limits. Of course, here the small limits come with the nice side effect of efficiency :)