I read plenty of traffic jam mails here,. I think, to avoid thos is one of the intended challenges of the game.
But I have observed 2 cases, where I think the simulation software is responsible
1) On a street with two lanes for each direction, a car with an intended left turn should use the left lane.
2) A vehicle which is doing a U-turn on the street (e.-g. at the end of its route) should ths do only, when all parts of the vehicle fits on the new lane.
How to reproduce this situation: I created an intended traffic jam in Lane A at the end of the route of a tram with horses which is coming frome Lane B and has to make a U-turn into the jam on lane A. What you see is, that the horses make the turn, but the rest not.
Lane B is now blocked as long as there is a jam on lane A.
Lane A is not blocked. The traffic goes “through” the horse.
This problem does not happen anymore, when the tram is replaced by a horse-less tram.
I think, the software solution is that the vehicle in lane A which stopped to allow the U-turn from B, should give space for the whole turning vehicle (horse + tram).
As a workaround you can stop the traffic on lane A and allow the U-turn. Or you use only vehicles which makes the U-turn in one single step.
But maybe the best solution is: Do not allow U-turns!