As an example of the level of sophistication of Logisim's algorithm, consider the following circuit.
Every component has a delay associated with it. More sophisticated components built into Logisim tend to have larger delays, but these delays are somewhat arbitrary and may not reflect reality.
Occassionally, and with uneven frequency, Logisim will add a delay to a component's propagation. This is intended to simulate the unevenness of real circuits. In particular, an R-S latch using two NOR gates will oscillate without this randomness, as both gates will process their inputs in lockstep. This randomness can be disabled via the Project Options window's Simulation tab.
From a technical point of view, it is relatively easy to deal with this level of sophistication in a single circuit. Dealing with gate delays well across subcircuits, though, is a bit more complex; Logisim does attempt to address this correctly.
Note that I'm stopping short of saying that Logisim always addresses gate delays well. But at least it tries.
Next: Oscillation errors.