Software PWM implementation on ATTiny44 screws up timing functions
What you are doing wrong is:

The problem is your interrupt handling routine lasts too long. Since inside ISR() interrupt flag is automatically cleared, timer0 interrupts are being missed and delay() depends upon timer0 interrupts.

To confirm the problem is ISR, remove the for loop and just toggle one pin instead. I bet the delay will then be as it should.

Try to put sei() at the beginning of your ISR to see what is going to happen with the timming of the delay - but that is not the right way.

Instead of using delay() (based on timer0) you can count the number of timer1 interrupts but ISR routine must not last longer than the time between two interrupts and your ISR spends quite a few T-states inside the for loop. A rule of a thumb is ISR has to be very short (fast) - unless you really know what you are doing. For example, in one of my devices I am using a very long ISR routine (in fact the firmware consists of only the ISR - there is only sleep_mode(); in main) for which I know it sometimes lasts longer than the time window between interrupts and I know some of the interrupts are occasionally being missed. However, these few missed interrupts are not critical to that particular application and I am sure the interrupts are being missed rarely.

You could change OCR1A value to increase the time between interrupts but then you would have lower PWM frequency.