Yup, that's about it.
From David's e-mail off-list, the only explanation missing from your description is that the first save puts the data in the cache even if the write fails, which is why the mtime is incremented before the second save. So, for example, this can happen if getting the token takes a little while (which I've seen a handful of times but didn't understand before):
1) Save, get "auth token expired"
2) Save, get "file has been modified"
3) Save, get "auth token expired"
4) Save, get "file has been modified"
5) Save, succeed
The best solutions I see are (in descending order):
1) Attempt to refresh the auth token synchronously before failing the write.
2) More aggressively seek to refresh an expired auth token, such as after wake, or when it expires.
3) Don't write to the local cache in writethrough mode if the remote write fails.
The way it things are, it's unclear when the data has actually reached the server. When I first started noticing these errors, I used to take "file has been modified" to mean that the data had been committed, but it really just means it's in the cache.