It’s worth it to remember that zangoose are considered to be blood enemies of serpent pokémon—especially seviper—largely because seviper are their natural food sources. So right now, your zangoose is expressing hostility towards your friend’s pokémon simply because it’s acting on the instinct that says he should be killing and eating them.
That having been said, though, it’s intriguing that you’ve mentioned his aggression on the battlefield as well, which may indicate that your zangoose is not only acting on instinct but also attempting release pent-up anger on a target his species deems acceptable. So as with all issues regarding pokémon behavior, it’s important to begin treating the issue off the battlefield and away from triggering situations first. Consider adding meditative exercises to your daily routine to help manage your zangoose’s stress and aggression levels as well as to teach him discipline. Reward him for exercising restraint during battle training. When encountering poison-types other than your friend’s team, give him a treat every time he behaves (by not growling or moving towards the poison-type), and give him a treat whenever he restrains himself on the battlefield against a poison-type.
Then, when you encounter your friend and his team, reinforce all of these lessons by rewarding zangoose whenever he behaves. If he growls, tell him firmly (but not sternly) that your friend’s pokémon are his friends and that you would appreciate it if he would treat them as such.
If all else fails—and only if all else fails—consider pairing him with a sturdy poison-type to help him understand that they are not targets and be prepared to do plenty of patching up during the socialization process.
In short, it may try your patience, but the key is to teach your zangoose restraint, discipline, and a bit of open-mindedness to boot. Once he begins to associate being on his best behavior around poison-types with rewards, it will be easier to keep your zangoose in check.
Best of luck, anonymous.