Не совсем верно, margin не приравнивается нулю, тк шаг может быть любым и спан может уйти на n пикселей за экран.
Пример:
ширина спана(width) 200px
шаг(step) 12px
тогда margin может уйти на -204px
по этому делается margin+=width, что даёт -4px
т.о. не возникает скачков.
Впринципе чтоб наглядно понять как оно работает надо просто убрать заполнение строки копиями:
<style type="text/css">
div#marquee img{vertical-align:top}
div#marquee span{font-size:0}
div#marquee {
border:1px solid #000;
overflow:hidden;
white-space:nowrap;
height:70px;}
</style>
<div id="marquee">
<span>
<img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif">
<img src="http://javascript.ru/forum/image.php?u=12257&dateline=1304687820">
</span>
</div>
<script type="text/javascript">
(function(step,speed){
var e=document.getElementById('marquee');
var e_width=e.offsetWidth;
var span=e.getElementsByTagName('span')[0];
var width=span.offsetWidth;
var margin=0;
//while(e.scrollWidth<(e_width+width))e.appendChild(span.cloneNode(true)) убираем заполнение
step||(step=10);
speed||(speed=50);
(function(){
margin+=width>=-margin?-step:width;
span.style.marginLeft=margin+'px';
setTimeout(arguments.callee,speed)
})()
})(5,50)
</script>