Well, that is a different topic but actually BigInt in julia are too slow (about 250 times slower than Int).
Other languages have 50 times faster BigInts because their BigInts are what would be roughly a type
Union{Int,BigInt} in julia. Unfortunately such a type has not yet been implemented (and the implementation is currently beyond my skills). But SafeInts are very useful: if you use them you can use BigInts only if needed.
Also, it is not quite true that
Some operations on Rationals in Base are overflow checked, as well as a few others (and you propose exponentiation could be integer checked). Actually it would be good that there is the possibility to do such operations without any overflow checking to get the utmost speed. But that the default Int would check.