I tested this opencores ip some time ago: it works and afaik it's reliable.
Implementing CAN controller on the fpga is undoubtedly more convenient than using an external component.
Anyway, please note these two points:
- in any case you need the external transceiver for driving CAN bus line
- as stated in opencores page, CAN protocol is patented by Bosch, so you need a licence to integrate it as an IP in your system. You don't have the problem with an external controller, because the IC producer has its own licence or pays royalties which are charged it in the IC cost.