I can't see that as normal ... sometimes they run a little fast, others it's staying on for a cycle or off for a cycle. Unless there is a difference in the way the LEDs operate compared to anything else. I can put another led on on of the digital outputs (with a suitable resistor or course) to check if the outputs actually do the same as the leds. I'm a coder myself and my dev radar is telling me there's some issue with resource locking going on ... especially as the Pi always locks up within 30 mins. I've run it all day today using OpenPLC, and a Led on the GPIO port.The interface is writen in C. All the test I made are on a RPI4. I do not have pi3 but I will run the tests on zero and get back to you.
The skipping one interval is kind of normal because the driver write to the I2C only if the Leds are different than the previous value.
Until I setup my pi zero can you try to increase the task interval from 20ms (default) to 50?