I will assume for now that the only reason is to support hierarchies of cache managers. Note that this should not be changed by cache managers more than once-removed from the origin. This is because the act of checking the cache consistency with the original document is equivalent to getting a new copy of that document, but the act of checking cache consistency with a higher-level cache is only equivalent to copying that cache.
All headers are completely optional, of course.
I am not convinced that loops are possible. From the HTTP2 spec, I'd say that they should reflect the originator of the request.