Either use a notification dropdown (always, just this time, not this time, never) or a checkbox (notify true or false).
There is no way to trigger a notification based on the change in an assignee field. There is a feature request for that though. You'd have to look it up, I don't have my list in front of me.
We needed to do this. The way we implemented it was rather simple and came with another benefit of notifying the assignee anytime the ticket was update by someone other than themselves.
After Save/Email notification Rule (not sure if it matters, ours is that latter).
Trigger; After save, on create, on update
Criteria; Status != Closed
Action; Send Email to "Assignee", Exclude addresses of last modifying Agent, Template "ticket update"
If a team is assigned, this rule will notify based on the team's settings.
If a team member is assigned, this rule will notify based on the team's settings and notify the agent.
If an Individual is assigned, this rule will only notify the agent.
If someone other than the assignee updates the record, the assignee is notified.
Our policy is that our help desk only assigns to teams, and then each team has a queue manager to distributes requests.