It's difficult to fix this bug now.
Because BreakIterator.isBoundary()'s spec doesn't tell that IAE can be thrown, IAE should not be thrown in this method in any invalid-offset cases. However, it's very difficult to modify RuleBasedBreakIterator.isBoundary() not to throw IAE due to backward compatibility. We can imagine that some people have troubles if this method stops throwing IAE.
And, it's very difficult to modify BeakIterator.isBoundary()'s spec, too. BreakIterator is a public abstract class, and users can create a subclass of it. Spec change won't be welcomed.