Hola,
Me alegro que te funcione. Se me olvido preguntarte que probaras de monitorizar cuando termina el envio serie antes de poner el micro en sleep.
Es decir, volviendo a power-save mode, y después del Serial.print("loquesea"), pones la siguiente linea:
while (!(UCSR0A & (1 << TXC0)));Esto se quedará esperando hasta que se haya enviando todo. Es una prueba rápida a ver si así funciona.
No estoy seguro en que versión de Arduino.... juraría que cambiaron las rutinas del puerto serie cuando pasaron a la versión 1.0, y uno de los cambios era las rutinas de envio....
Repasando las notas de arduino:
Por ejemplo en la versión 1.0.3, puede que el Serial.flush() también te sirva ( "Serial.flush() waits for last byte to transmit. (michele.mazzucchi)").
A partir de la versión 1.0:
" Serial transmission is now asynchronous - that is, calls to Serial.print(), etc. add data to an outgoing buffer which is transmitted in the background. Also, the Serial.flush() command has been repurposed to wait for outgoing data to be transmitted, rather than dropping received incoming data."
Lo de monitorear el bit funcionaba antes que la versión 1.0, ahora tendría que repasar cómo son las rutinas...ya que esto me lo estuve mirando para RS485 para saber cuando cambiar el bit de control de transmisión a recepción....
Asi que puedes probar el Serial.flush() si usas las últimas versiones a ver si te funciona (antes de dormir el micro). Vaya, lo que quiero decir, es que problablemente venga de ahí el problema. Aunque hay que mirarse un poco en profundidad cómo son las rutinas serie (hace mucho tiempo que no me las miro).
Digo de probar porque consumirá menos en power-save... y por investigar un poco más!

Saludos,
Igor R.