I think the discussion of site-wide (ACS object) solutions versus package specific solutions is very interesting and very important. I also think I understand both sides of the discussion. For now I am staying with the mapping table. Why? It's a proven solution that is quick to implement, reliable, and easy to understand and maintain.
I just checked out the the acs-rels data model and it does have some appeal to me. However, the API is a bit involved (you have to create relationship types as well as relationship roles) and it never really caught on with developers it seems - it is hardly used in OpenACS as far as I can tell. It is not clear to me that the toolkit is evolving in the direction of acs-rels.
I think ACS permissions is a good example of how a generic admin UI for ACS objects can be useful. However, in the case of relationships I'm not sure we will ever maintain them with a generic admin UI, let alone generic user UI. The only system that I've seen with such a generic mapping mechanism is ShareNet that lets you navigate knowledge objects of any type and link them together (they are not using acs-rels for this though). I wonder if Rafael Schloming et al ever had something like that in mind for acs-rels.
So to sum up I am staying with the field tested simple mapping table. If there is a good reason to use acs-rels in the future I can write an upgrade script to migrate the mappings there then.
Thanks for all the feedback and good ideas!