I've seen this problem a few times before, so I may add some information. Unfortunately I don't have a specific scenario at hand, so I have to rely on my memory.
I usually get this with an industrial block which has two SYs at the entrance for raw materials just opposite the street. When raw materials are imported, I usually set the advisor to 1600, the SYs to accept 800 each. This helps coping with the tides of incoming caravans.
I still don't know what triggers the loop. Maybe Eriks idea of assigning both cartpushers to the same workshop, one of them staying behind, starts it. But after it is started, I see this: SY1 delivers to workshop, SY2 delivers to SY1. Since this is only a 3 tiles trip, cartpusher(CP) 2 is back soon, takes another 100 and waits outside. CP1 comes back, takes 100 and starts to next workshop. CP2 starts to SY1 and so on. Since this halves your capacity, this usually let your workshops fall dry after some time. Note that the loop doesn't end when 2 workshops are able to get 100 material! So it's a bug, not a feature.
I'm not sure what breaks the loop (my memory fades on this), if it's 1-2 workshops falling completely dry - which gives them higher priority - or SY2 is completely empty. But after the loop ended, both CPs work fine until the loop is triggered again.
Plebus, you're right on this: There's a delay between a SY CP loading his cart and starting to the workshop. If during this delay any raw materials source has 100%, its CP has priority, and SY CP has to wait outside. If the latter already started walking, he will deliver, and the other one has to wait or go for the SY.
As I said, this happens to me with imported goods. If I'm producing them myself, this will never happen. I never allow clay to be delivered into a SY, max. 800 of farm goods in 1 SY to get the carts off the floadplains. It is much more effective to let them deliver directly to the workshops. So in these cases the loop isn't possible, which means it's not a problem with the farms.
The loop is especially annoying if I'm importing 2 raw materials and use both SYs for them (800 each). Usually this arrangement is much more efficient than assigning only 1 type to each SY. But if the loop occures, both industries will fall dry, so it becomes a serious problem.
Just my 2cts,