Why is the last carry block's gate in a full adder an OR gate (and not a XOR)?
Check your truth tables again. Both outputs are high if all three inputs are high. The top AND gate represents what we call a "carry propagate", meaning that the sum of A and B is one so there is only a carry out if there is a carry in. The bottom AND gate represents a "carry generate"...if both A and B are one there is definitely a carry out of this adder. If either one of these carry conditions is met, then the final carry out is one.