Timer2 does not work as it should
I have located the source of the problem.

In file wiring.c (arduino-1.5.6-r2\hardware\arduino\avr\cores\arduino) which gets called before setup(), there is the following part that tries to changes the timer 2 prescaller to 64 by setting the CS22 bit.  

// set timer 2 prescale factor to 64
#if defined(TCCR2) &amp;&amp; defined(CS22)
    sbi(TCCR2, CS22);
#elif defined(TCCR2B) &amp;&amp; defined(CS22)
    sbi(TCCR2B, CS22);
#else
    #warning Timer 2 not finished (may not be present on this CPU)
#endif


You already set CS20 and  CS22 so this doesn't affect you. What does affect you is the following part which sets bit WGM20 

    // configure timer 2 for phase correct pwm (8-bit)
#if defined(TCCR2) &amp;&amp; defined(WGM20)
    sbi(TCCR2, WGM20);
#elif defined(TCCR2A) &amp;&amp; defined(WGM20)
    sbi(TCCR2A, WGM20);
#else
    #warning Timer 2 not finished (may not be present on this CPU)
#endif


and you have already set WGM21 so WGM21 and WGM20 set changes the timer mode to fast PWM , top=0xFF which gives almost double delay that the mode you were trying to use (CTC top=124).

How to workaround this issue?

Timer2 is used when its associated PWM pins are used with an analogWrite() call, so the Arduino setup code sets all prescalers to well-defined values just in case the timers might get used later.

I would not try to fight that code; instead, I would just make sure that my setup code runs later, e.g. by moving it to a separate setup() method in your Timer class and calling that from the global setup() routine.