I advice using delays in general to help debuging code and to detect inadverted clock-2-data race conditions when clock is going over several signal assignments, but for me, this means, that I usually only delay signal assignments from clock edge in clocked process, in usual code thats enough to see, if data changes before or after clock edge.
This particular code is no example, of code in which I expect delays to matter (when using correct simulator). I can only guess, that the simulator the author is using messes up with this two lines
and execute the code inside the if rising_edge clause also in delta cycles that have no rising clock edge. In that case the trouble might result from a mixture of unlucky sensitivity list with broken simulator and missing delays and any one of the three can be used to fix this issue.
bye Thomas