I would suggest the most plausible reason being race conditions.
Assume two users are going to access the same file and edit it. User A opens the file, reads it in and closes it. User B comes along before User A has had a chance to write and he also reads in the file.
Now if User A had left the file open User B could not access it to read. In many cases this is the desired behavior as it avoids any possible race conditions. User B cannot access the file till User A is done with it.
Alternatively, let us assume that Users A and B will not rewrite anything in the file but only append to it, and that the order in which they do so is unimportant (logging is a good example of this). In this case it makes sense for us to give User B access to the file before User A has written as User B maybe unconcerned with what User A is currently doing.
Obviously both cases are concerned with how you want to handle the race condition, so you should think about that problem first. Usually blocking behavior prevents race conditions from hurting your program, so I would default to that behavior, but be aware of the alternatives.