Your typical cause for crashing when you have network connectivity issues (and your iPad user might qualify for this one) is not too hard to explain.
Usually the front end opens the back end using SMB (Server Message Block) protocol. This is a TCP-family protocol that involves negotiated port numbers and sequence-numbered transactions. SMB is the standard Windows File-Sharing protocol because Access merely treats BE files as ordinary files, not as something more complex.
When you have one of these crashes, what has probably happened is that your unlucky user tried to update something. If the tables are indexed, any DELETE, INSERT, or an UPDATE that affects an indexed field must write one or the other of the two items first - either the index or the table itself. (They ARE separate.) This is because Access is not multi-threaded. It linearizes its work.
If you get unlucky, you find that one of the two updates worked but the other didn't due to a network failure that split the two operations. So "inconsistent state" MIGHT be something as simple as "index doesn't match table." (There are lots more bad things, but that one is easy to discuss in this context.)
IF that inconsistency is all that happened, you are lucky because rebuilding the index makes the table and index consistent again. Access "knows" if this happened because it leaves behind indicators of what it was doing (so that other user FE copies will know that the particular part of a table is in flux.) If the markers don't go away then Access knows that something is wrong and does the repair.
What I just described is ONE of several possible mechanisms for a recoverable crash due to inconsistent format. There are other issues, such as preparing to update a set of records only to have a crash prevent all of the records from being updated.
Because this is a TCP-family operation, if the network drops, that connection is essentially dead. Remember, it had a negotiated port number and all transactions used sequence numbers. After the network drop, you CANNOT reconnect using the same port and remembering the next sequence number. (Most modern TCP/IP packages will prevent reconnection as a security issue.) So the FE that lost connection cannot try to pick up where it left off. It can't finish the incomplete transaction. OK, so now you have an operation pending and no way to finish it. So Access instead forces you to do a Compact & Repair.
Here's the sneaky part. Access does this C&R by opening a new empty database and copying everything from the old database - but it won't copy inconsistent stuff. So what is left is structurally OK but might be incomplete. Since file locks are specific to the file, this means that the NEW copy (the output of the C&R operation), being a physically different file, has no pending locks. What will eventually happen is that Windows will time-out the broken connections and allow that old version to "go away."
What did that discussion do to help you? I hope it helps you understand one reason why crashes happen. In particular, if there is ANYTHING tenuous about your network, just remember that EVERY network drop-out potentially leaves something only partially updated and thus inconsistent.
Next question: How do you prove what happened? Open the Control Panel on your server machine and get to the Administrative Tools area. Look for Event Viewer. You will see a list of several possible sets of events to review. The System logs might be helpful. Don't be afraid of them, they are cryptic but the viewer will help you understand them.
You need to know the time to approximately the specific minute at which the error occurred. Then use event viewer to review logs at that time. This is easy because the logs are sorted by date/time of occurrence - so it should be trivial to narrow down to the correct time in the log. Usually, events occur no more than 1 minute to either side of the crash time. So if you can find the crash event, look to that which precedes it by no more than a minute.
You can have as many as four or five potential logs from Windows, so don't be afraid to review each log in turn. You might see a "network timeout" event in the log. If so, you will be able to see the IP address of the other side of the failing connection. And that will tell you whodunit.
You can also look at the same logs from the client side by visiting the logs on the machine experiencing the failure first. Again, look at the logs just before the crash, no more than a minute or so, to see if you can identify a causative event.