Is setInterval() and setTimeout() bad things to do in modern jQuery animations?

In general setInterval == BAD and setTimeout == GOOD for animations.

setInterval will try play catchup, as nnnnnn stated:

some browsers may queue everything and then try to catch up when your tab gets focus again

You best method for looping animate() is by calling recursively, for example:

var myTimeout;

var myAnimation = function () {

    $('#myID').animate({
        [propertyKey]:[propertyValue]
    }, 5000, function() {
        myTimeout = setTimeOut(myAnimation, 1000);
    });
}

Notice how the myTimeout is held outside the scope of myAnnimation allowing the ability to stop the animation

clearTimeout(myTimeout);

Which you could hook up to the window.unload event.