First of all, sleep (and standby where supported) modes of CAN transceivers has very little to do with Pi. The MCP2515 is not a transceiver, it is a controller.
Second, you should distinguish between sleep modes of all three (transceiver, controller and Pi) and figure out what is it you really want to do. Not to mention that "connected CAN device" sounds awfully like remote device that you wish to control, not your own.
As for the local Pi + shield, there are several options as well. What you have available to you depends on which MCP2515 pins are available on the shield.
use "int" pin configured for wake up on bus activity to wake up your Pi when there is a any communication on a bus.
use "int" pin configured for receive interrupt to wake up your Pi when specific messages received.
use SPI commands to put MCP2515 into and out of standby mode. Then the Pi will control when MCP2515 sleeps, while you can program Pi sleep time separately.
a combination of the above, depending on your specific requirements.
The configuration registers of MCP2515 responsible for various sleep and wake up modes are thoroughly described in the documentation. The problem you might face, however, is that specific CAN driver available to you on Pi might hide SPI layer and give you only access to CAN messages. I am not familiar with Linux CAN implementations, so can't help you there. AFAIK SocketCAN driver does exactly that.
On the other hand the PiCAN datasheet that you've referenced mentions "Interrupt RX on GPIO25", which might indicate that the driver configures some default behavior on net activity. I can only suggest connecting whatever signal analyzer tool you have available to that pin and trying to figure out what triggers it.