Intel’s 8088 defines a few interrupt vectors, and reserves many others. IBM’s PC project decided to use some of the reserved ones as software interrupts used by the BIOS. And subsequently, Intel’s '286 made use of them… here’s Ross Ridge on Retrocomputing StackExchange:
Unfortunately this proved to be a mistake by IBM, as when Intel designed the 80286 they defined additional CPU exceptions in the reserved range, going up all the way to vector 13 (0Dh). This meant the IBM PC/AT, which used the 80286 CPU but also needed to be backwards compatible with the original 8088-based IBM PC, had interrupt vectors with two different purposes, one defined by the CPU and one defined by the BIOS.
In particular, having both the print screen and BOUND violation exception using vector 5 proved to be fairly big nuisance. In theory, this shouldn’t have been a problem, any program using the the new BOUND instruction would need to install their own interrupt handler, one that could distinguish between the two sources. In practice, however the BOUND instruction ended up getting executed unintentionally by programs that had crashed and the default BIOS handler would then get stuck in an infinite loop of printing the screen.
“Interrupts vectors 5 through 31 were marked as reserved in Intel’s 8086 Family User’s Manual”
(From retrocomputing stack exchange.)
Using something beyond the spec, whether it’s using undocumented features, or making use of reserved values, or assuming specific values when they are specified as undefined, is a good way to store up trouble for the future. That doesn’t stop people, of course, but IBM are not the kind of outfit I’d expect to do this.