Not yet mentioned is the issue of debugging an interrupt service routine. If the code is simple (e.g. set a flag), it is trivial to debug (either the flag was set or it wasn't). Serial is not safe to use in the context of an interrupt. Without Serial, debugging can be very tedious and difficult.
What are some heuristics when writing ISR's?
Simple - easier to debug and easier to prove the code is free of bugs
Short - ditto
Fast - long running ISRs interfere with everything else
Infrequent - interrupts are expensive; most of the processor's state must be saved and restored
Take it from someone who's spent years dealing with ISRs, do yourself a big favor and keep them as simple as possible.