That is indeed a great test case that might help narrow it down:
If you "debug into it" you should see that primitive 3 failed for SmallInteger, and it falls back to Integer's version of `<`. If it doesn't, then it's either the JIT incorrectly short-circuiting the comparison, or primitive 3 incorrectly succeeding.
If instead you do see the super send (as is the case on Intel), then it must be primitive _primDigitCompare_ in LargeIntegers plugin.
Very much sounds like a signed/unsigned problem.