Mark,
You are right, but I think the wording is a bit complex and hides a slightly inconsistent outcome. Clause 8 says:
... If a segment contains the "/" or "%" characters, and the container is configured to not reject the request for containing an encoded "/", then the container should re-encode those characters to the %nn form. If any characters are re-encoded, then the "%" must also be re-encoded.
I read this so that if the container is configured to reject the request for containing and encoded "/" then the container should re-encode and the result should be "/foo/b%25r", otherwise it should not and the result will be "/foo/b%r".
So the result returned is different depending on a configuration that is kind of orthogonal to this URI.... but I can see why we re encode IFF a segment may contain "/". Perhaps the text would be clearer as:
... If a segment contains the "/" or "%" characters, then the container should re-encode those characters to the %nn form if and only if the container is configured to not reject the request for containing an encoded "/".
cheers