Key relationships are important if you want to maintain data integrity. Wihtout a key relationship, you can insert a record into a child table without a matching record in the parent table or delete a parent record without deleting the child records. Allowing this is a very bad practice.
You also cannot set up cascading delete and update unless you have a key relationship.
There are occasions when the relationship may not need to be explicitly desfined and maintained, but they are usually involving data that is imported from elsewhere or when you may want to save data historically in child records but update the parent with current information (the classic products/orders tables come to mind. In this case you better denormalize, the parent table is now acting as a lookup table, not truly a related table.) But the exceptions should be few and far bewteen, not a standard practice.
I'd say in general your coworkers are wrong. Further programming what needs to be done in code rather than setting up relationships is setting yourself up for disaster when someone forgets in one process or actually changes data directly in the tables. Very poor practice.
Questions about posting. See faq183-874