You can't directly give groups individual respawns. Give them regular base respawn (respawn = "BASE") (and put the base respawn marker somewhere away from the action, where they will flicker in for an instant), then move them immediately to the correct respawn point, once they spawn in:
// Run from init.sqf with:
// [] execVM "group_base_respawn.sqf"
if (isServer and isNull player) exitWith {}; // Don't run on dedicated.
waitUntil { alive player };
player addEventHandler ["KILLED",
{
[] spawn
{
waitUntil { alive player };
// Chose a respawn point, based on group name.
// Might need to change the names, of course, based on your mission.
_marker = switch (str group player) do
{
case "WEST 1-1-A": { "Respawn_West_1" };
case "WEST 1-1-B": { "Respawn_West_2" };
case "EAST 1-1-B": { "Respawn_East_1" };
// etc.
};
player setPos (getMarkerPos _marker);
};
}];
For your triggers problem, just make the trigger condition something like this:
({ ((getPos _x) select 2) < 1 } count thisList) > 0
So that you ignore any aircraft (well, any vehicle not near the ground).