NavMeshAgent

Why do we call the update to check if the NavMeshAgent to turn off in update, where it runs every frame

and not called to turn off within a function called when the AI or player Die, health reaches 0.

This is actually an area I tend to agree with. The code could be refactored to deactivate the NavMeshAgent, and more importantly the Controllers should be checking for isDead before allowing anything that could lead to Mover setting a destination happen in the first place.

In any event, as with most objectives, there are many ways to accomplish them.