This might be a misnomer but the sleep() function controlled by the $this->identifier . '_seconds_between_batches' is actually between every task, and not every batch as the name of the filter would make you believe.

Having a sleep() function within the task itself is not necessary because you can just put one there in your child class task() function if need be.
Also I think you should be able to set this delay through a class property instead of a filter (or both).