For #1, you could incorporate a check into the after script to verify whether the account request includes a particular attribute. If so, proceed with the action.
AfterModify will trigger every time there is an update for a user. It will trigger for any attribute change or Group add/remove. I don’t think there is any way to restrict it for a particular attribute.
As mentioned by @sunnyajmera you can only restrict what the PS script would do once it starts execution.
May be the user base you have mentioned is having multiple updates (group updates + attribute updates) and that could be the reason the AfterModify is triggering multiple times.