I think (I could be wrong) that the join policy in group_types is the default join policy for the group type.
I looked at this a little bit yesterday but the group type pages are so slow on my machine they are almost unusable. I believe the group type pages create tables for the group types also and it's possible to add columns to these via the interface. You can also get a list of group id's by group type from these tables.
Looking at this another way, is this really a kludge to get around the fact that object_types and attrbiutes are not objects. If they were would join policy just be another attribute of group_type object.
I've found it useful to get what group types a user is in. I usally do that when the regular permission system would be too slow. If I know the user is in a group with admin permission then I don't need to check every record. That query is not all that fast either.
I've been thinking about partitioning the acs_objects table by object_type but it's difficult because you really need to partition by some supertype. It might be nice to have a generlized method for denormalizing data like this because it would eliminate the need to join with acs_objects. It's not as transparent as partitions but it's not Oracle dependent and it solves the problem better.