Simple example:
Works correctly:
- User clicks, agent.SetDestination(somePosition) is called.
- Agent navigates to destination, and stoppingDistance is used.

Does not work correctly:
- on Update(), agent.SetDestination(somePosition) is called.
- Agent navigates to destination, stoppingDistance is disregarded.

Is this in fact the correct behaviour, or should I file a bug report? If it's the correct behaviour, I think it should be noted in the docs.

It's sort of mentioned here, and AngryAnt responds with:

I would suggest that you repath in a loop in a coroutine and in there, if myAgent.remainingDistance > kFarAway, yield return new WaitForSeconds (kABitOfTime); else yield return null;
FWIW, I'll do some variation of this. I was aware what I was doing was inefficient, but intended to deal with that later.