There is plenty of hardware where an OS cannot make either of those guarantees.
So code needs to be written to handle those cases. And if there is code to handle the cases, it needs to be correct, and if it is correct, there is no harm in using it in other edge cases where it doesn't have a big performance hit.