Assuming we are talking about PICs here. Instead of resetting the timer, add the timer interval value to the timer. this compensates for timer overun due to ISR proccessing time or interrupt latency. So say your interval is 0x80 for an 8 bit timer. If the interrupt is delayed by 1 timer tick, the value of the timer will be 0xFF. When you add 0x80 to 0xFF you get 0x7F which is correct.
Note that to get exteme accuracy, you should poll the timer untill it changes and then add the interval value. This is especially true when you use the prescalar since writing to the timer clears it and thus tosses any partial accumulation. Also, you loose 2 Fosc/4 clocks when writing the timer (resync). You might want to keep track and compensate.
letting the timer reset itself is fine but some processors (PIC16s, for example) do this only at terminal count (i.e. 0) and start from maximum count (timer0 would become ff, for example).
Phil