Hola
De forma resumida:
Puerto serie:
Comunicación asíncrona
Baja velocidad
Necesitas BooLoader para programar
ICSP
Programación sin BootLoader pero necesitas de algún dispositivo externo
Mayor velocidad en la programación
El programa arranca de forma inmediata
Cuando usas el SPI (el ICSP es solo para programar) para comunicarte con otros dispositivos, usas un bus serie síncrono de mucha velocidad