Consider a design where you have a single microcontroller, which has a CAN interface. You write an Arduino sketch and upload it to your node. What happens if your code is buggy and gets your microcontroller stuck? To get out of that situation, you'd need to reset the MCU and upload a new sketch. We could add a reset button on the board, but you'd need someone to press it: not a very convenient solution in a home/garden network. Alternatively, you could power down the whole network and reboot all nodes simultaneously and take this opportunity to update the buggy node: also not very satisfying.
In addition, NoCAN supports messages of up to 64 bytes, made of multiple standard 8-byte CAN packets (we didn't use CAN-FD). With a single microcontroller, the process flow would need to be interrupted to manage the reception of CAN packets, as well as packet assembly, taking away precious MCU resources.
The Omzlo CANZERO overcomes these issues with a dual-microcontroller approach. The CANZERO uses an STM32F042 as a network manager and a SAMD21G18 as the "main" microcontroller, which runs Arduino-compiled sketches. If the SAMD21G18 ever gets "stuck", the network manager can send a special packet to the node, which will instruct the STM32F042 to reset the SAMD21G18, enabling the microcontroller to enter bootloader mode for a potential software update. The STM32F042 also offloads the SAMD21G18 from a lot of network related work and can buffer packets until they are ready for processing.
Overall, this approach is not so different from the classic Arduino, which has an ATmega328P as its main processor and an ATmega16U2 as a USB-to-serial manager.