Maybe because if the code wants to call the invalid opcode interrupt handler (INT6), it needs extra code to populate the flags and registers expected by that handler, whereas actually triggering an invalid opcode exception will get all those parameters populated automatically.
It doesn't have to be the invalid opcode handler that you call. Prior to SYSCALL they picked one to be the system call handler. Windows 95 used illegal instructions because it was benchmarked to be the fastest fault.