Interrupts - bjornburton/champbot GitHub Wiki
In an ATmega, at least, it's not the generated interrupt that really wakes it from idle, it's having to call an ISR. If an ISR is not set for the vector, even an empty one, it wont step past the sleep instruction. This is covered in the datasheet (10.1 Sleep Modes...executes the interrupt routine, and resumes execution from the instruction following SLEEP.)