Mailman, RI should indeed be enforced by code. However, when you are in a Rapid Application Development environment, the answer to "rolling your own RI" is decidedly NO for version 1.
Instead, you design the basic functionality to validate the design concepts. You define relationships early on in the project because the sub-form and sub-report wizards READ those relationships to automatically link parent/child tables for you (or at least make a strong suggestion of what you should use for linkage.) If you have relationships defined for tables, your JOIN queries automatically know which JOIN to use for those tables.
When you are ready to get rid of the ugly Access messages (say, in version 2), THEN is when you go back to implement your own pre-update checking to verify maintenance of RI. Everything in its own time. But there is also this to consider - if your users can be educated on what Access is telling you when it pops up those ugly messages, you can build a product with RI protection in far less time if you let Access manage RI for you rather than trying to roll your own.
I am not sure why you are down on RI from a practical sense, because if there was any significant problem with RI, like maybe it doesn't work correctly, then all sorts of small-business financial types could sue the pants off of Microsoft. (Yeah, I know about the disclaimer and liability limitations in the EULA - but that's why you hire good lawyers.)
Per the OP's original question, the reasons you use relationships have to do with what doors that opens up for you within Access. RI is only one of the doors. Informing the wizards of how things are related? Another big benefit of explicit relationships.