4 channel software PWM using Atmega16 for controlling 4 ESCs for brushless DC motors
If I understand your code correctly, you have Timer1 in Fast PWM mode using OCR1A to measure PWM duty time and ICR1 for the period. When OCR1A matches the current timer value it triggers an interrupt. You then reload it with a longer time, the idea being that it will match the timer 1~2ms later for the next servo pulse. 

The problem with this technique is that in PWM modes the output compare register is doubled-buffered and synchronized to the PWM period, so writing to it during the current PWM cycle will only have affect in the next cycle. This is described in the datasheet on page 98:-


  The OCR1x Register is double buffered when using any of the twelve
  Pulse Width Modulation (PWM) modes... The double buffering
  synchronizes the update of the OCR1x Compare Register to either TOP or
  BOTTOM of the counting sequence. The synchronization prevents the
  occurrence of odd-length, non-symmetrical PWM pulses


So instead of getting an interrupt 1~2ms after you write to OCR1A, you get it 20ms + 1~2ms later. 

I'm not sure if it's possible to do it your way using a non-PWM timer mode, but it might be easier to just use a basic timer to time each pulse separately, then add up all the times and subtract from 20ms to get the final pause time. 

Many modern ESCs can handle frequencies of 250Hz or higher, so you might even get away with just pushing the pulses out as fast as possible one after the other.