It's a bit weird.
Firstly, I'm getting the same as you with perls built with -Duse64bitint - except that it works as expected *iff* that perl has also been built with -Duselongdouble. (I don't know why this is so, and I haven't found time to have a closer look.)
Secondly (and you probably already know this), the problem only arises with Math::BigInt objects. A normal perl scalar containing the value 18446744073709551360 is fine. Why are you storing this value in a Math::BigInt object, given that a perl scalar can store that value ?