When upload new patch, via Web Interface, for existing Differential Revision, then all repositories specified in Repository field for that revision are removed. I believe value of that field should be preserved.
If I upload new patch, via Web Interface, and then set value of Repository field, then I still see Context Not Available in between code pieces from the patch. I believe, that change in Repository field (from empty to something, from something to something else, from something to empty) should cause context to be populated.
I bet the arc diff command is setting Repository field and silently populates context as well.