Firstly, let me explain why your technique isn't working (before suggesting a better one):
hint format ["%1", units grp2 in (list trg_1)]
Will never work as you expect it to (will always be
false), since the result of "units grp2" is an array and thus will never be within another array, at least as far as
in is concerned. If you want to know if two arrays have an overlap like this, you need to use something like
count:
hint format ["%1", ({ _x in (list trg_1) } count (units grp2)) > 0]
Which would be true if
any of the units in grp2 were currently inside trg_1. Using this method, you'd need to manually check if any member of any of the four player groups were in the trigger area and then join them to the specific group.
A possibly less cumbersome way to do the check might be to link each of the four player groups to the trigger, so that it is only triggered by members of those groups and then to use a simple activation like this:
theCrew join (group (thisList select 0))
Where
theCrew is an array of the three AI crewmen that has already been created, say in
init.sqf.