I can only assume the load is not enough to keep ondemand at a high enough frequency, so it keeps scaling up and down. Maybe the CPU needs to wait between interrupts and that's causing the scaling. Maybe the process that's doing the work is low priority.
While the frequency changes, the CPU can do no work. You lose tens of microseconds each time it happens.
You might be able to keep using ondemand if you tweak its settings, but if performance fixes your problems and works well, probably no need to change it.