Ich bin der Meinung dein Programm hängt viel zu viel in der Timer 2 Interrupt Routine rum.
Warum nimmst Du nicht den Timer 1 her und gibst dann ein Servo nach dem anderen aus ?
Der Timer kann bei einer Quarzfrequenz von 8MHz mit einem Prescaler von 8 verwendet werden. Mit diesen Parametern entspricht der Comparematch Zählerstand dann auch der Servoimpulslänge in µs.
Da der Timer 1 ein 16Bit Timer ist brauchst Du nicht mal ein Überlaufregister, weil ja 65ms in den Timer "reingehen".
Dann lässt Du eine Pause von 12ms folgen und startest den Zyklus neu.

Die Comparematch1A Routine würde dann in einem Zyklus 20ms nur 4mal durchlaufen und deine Servos kriegen genauso viele Impulse wie jetzt auch.

Zur Register Sicherung:

Meine Register Sicherung schaut immer folgendermassen aus:
Code:
PUSH temp    ; temp Register sichern
IN temp,SREG; SREG ins temp Register
PUSH temp    ; temp Register nochmal sichern
PUSH temp1... ; weitere in der Interruptroutine verwendete Register sichern
; #### Dein Quellcode ####
POP temp1    ; weitere Register zurückschreiben
POP temp
OUT SREG,temp ; SREG zurückschreiben
POP temp          ; Werte des temp Registers zurückholen 
RETI                 ; Raus aus dem Interrupt