For pow(int,int), that's smarter, indeed.
A small caveat is that a failing "mulAndCheck" will create a less meaningful message.
For the methods involving "long", mulAndCheck(long, long) seems to contain more branches that cannot be optimized away. And more operations.
Since the code is far from obvious (due to bit-fiddling), it seems that the intention was to make it as efficient as possible. Calling "mulAndCheck" might defeat the purpose in some contexts (where the developer would then prefer to write the operation using an explicit loop).