Reading the DATA SHEET for the MCP2515 it shows in sections 6.7 on page 47 that "the MCP2515, after going bus-off will recover from a bus off condition to error active condition without any intervention by the MCU if the bus remains idle for 128 x 11 bit times. If this is not desired, the error interrupt service routine should address this."
**broken link removed**
This type of behavior is not the usual case for many CAN controllers, as a busoff condition is an error/fault condition, and so it is expected that some software action / intervention is desired so that the problem is announced, logged, recorded, or reported somehow for diagnostic purposes - someone may have to fix a wiring problem to restore the functionality. If the controller just resets itself automatically how would you know that something was wrong and that it couldn't communicate on the CAN bus? In some cases one does want the node to automatically recover and keep trying - so it can easily be done based on the software design for the particular application. But, with this particular controller you are using, the self-recovering functionality is built in, and if the user DOESN'T want it to recover that way, they have to write their software to explicitly prevent it. Sort of approaching things from a different angle. Perhaps the vendor decided for the use of this part, and with the I2C interface, that it would be more convenient for it to self-reset.
READ THE DATASHEETS for the part you are using. This is a case where a vendor has made their part operate differently from many other vendors, and so a universal answer isn't accurate.