Emmanuel -
I think you are right. On page 372 of the Copeland "Colossus" anthology, Friedrich Bauer presents the two cipher streams and their sum as you do, in particular showing S + 5 = U. He writes: "The subtractions can be verified by means of the Table in Appendix 3, remembering that for this cipher system addition and subtraction are the same thing". The table, however, shows that S + 5 = V. So anyone using Bauer's article as a source - and I don't recall seeing the details anywhere else - will likely have reproduced the error.
As Tom Haigh pointed out, there is an error in Copeland's reproduction of the teleprinter alphabet in Appendix 2 - the 5th impulse of I should be a dot rather than a cross - but that's not in play in this example. I'm not aware of any errors in the addition table in appendix 3, so it looks like it's a simple typo on Bauer's part.
The Fish section called the two basic symbols DOT and CROSS. In various physical manifestations, CROSS might be a hole in a paper tape, or a certain voltage, or a certain position of a cam on the rim of one of the wheels of the Lorentz machine. But they didn't know this, and for crypto purposes it didn't matter. The "General Report on Tunny" section 11B says:
Teleprinter letters are added by summing corresponding impulses according to the rules:
DOT plus DOT equals DOT
CROSS plus CROSS equals DOT
DOT plus CROSS equals CROSS
CROSS plus DOT equals CROSS
Usually, now, we write DOT as 0 and CROSS as 1, giving:
0 + 0 = 0; 1 + 1 = 0; 0 + 1 = 1; 1 + 0 = 1
which does look like XOR (or binary addition w/o carry). The opposite convention, which Brian Carpenter uses in his Python script, gives
1 + 1 = 1; 0 + 0 = 1; 1 + 0 = 0; 0 + 1 = 0
and would work equally well, but does look odd. But really DOT and CROSS represent neither numbers nor truth values, so these aren't truth tables, and describing the combining operation as "addition" is really a useful metaphor deployed by the codebreakers, I think.
Finally: 28 of the 32 symbols in the teleprinter alphabet had two interpretations depending on which "mode" the message was in: "figure shift" or "letter shift". 5 (also written +) moved the message to "figure shift" mode; 8 (or -) moved it to "letter shift" mode. Punctuation symbols were in figure shift, so to put a full stop in a message you'd have to do SOMETHING9LIKE9THIS5M8 (9 represented a space in both modes, and M represented a full stop in figure shift). The 5s and 8s were left in the message, and were crucial to the cryptanalysis (and, indeed, to simply reading it correctly). Apparently German operators often doubled the shift characters in case one of them got corrupted - 5 and 8 are idempotent, so a full stop could also be 55M88 or 555M888 etc - and this sort of thing helped the codebreakers.
(I'm using boldface here to distinguish the conventional names of the letters in the teleprinter alphabet from their interpretation as symbols of normal printed text. T represented "T" in letter shift and "5" in figure shift, for example. The "shift keys" 5 and 8 don't represent any printed character. If a 5 appears when you're already in figure shift, it has no effect.)
All the best,
Mark