Agree
I always felt the entities should decide what they do, rather than the rail does it.
The rail could just be used to suggest the entity what to do.
And if something falls into place, collision stuff should only happen after something triggers it's movement again.
Well, right now, the rails are triggering the entity to move, then the entity checks if it is possible to move, find out it's not possible and say STOP to the rails. The rail has a short memory, he tries it again after waiting a bit. Then the entity has to check again: "hey can I move now" he still can't so he says STOP again, this goes on and on until the blockade is away.
If we'd do what you suggest the following will happen: entity is moving over the rails, a block is in the way, the entity stops, a logic signal has to restart the rails to make the entity move again. Now this might sound pretty good, but with multiple entities on 1 rail, it will be impossible to make it work. Added to that, you remember the logic machines people made for super jumpdrive charging, image putting an entity on a rail, block its road and then spam the entity with restart moving again, every signal would cause a collision check this means: hell to all servers.
So yea, what you suggest would be nice if it was possible. The entity is already deciding what to do, stay or go. The rail just says where.