if (GetIsEnemy (oMonster) == TRUE){
What are you trying to achieve with the above? Kill any creature that follows a PC out of the area?
Here's the lexicon definition of GetIsEnemy. Since you don't define anything to compare the exiting monster to for purposes of defining what is an 'enemy', it uses the object that calls the script (and since this is in the area exit slot of the module, it is the 'module' calling the script, not a creature).
Another approach that should skip your associates could be to replace the line above with something like:
If (!GetIsPC(oMonster) && GetMaster(oMonster)==OBJECT_INVALID)
This looks to see if the exiting object is a PC. If the exiting object is a PC, then nothing happens. However, If the exiting object isn't a PC AND the object does not have a master, then destroy the monster. Your summons/associates will return the PC as the master, so they'll fail the check and won't get destroyed. A downside of this approach is that summons/associates of NPCs wouldn't be affected (since they do have masters, even though that master is not a PC).
This may or may not be appropriate based on what your objective is.