Source and channel encoding
Every codeword for the channel encoding must have the same length.


That is not inherently true, but it's usually handy to consider the information that goes into the channel coder to be of constant length, especially when considering block coders.


  Why is this? If the source from which the channel is reciving its input used a Huffman code, for example, lengths might be different for each symbol. Isn't that a contradiction?


No. The point is that channel and source coding are two independent things. You take source data, and the source coder maximizes the average information per bit (by converting input words of constant length into source-coded words of varying length). Then the source-coded words are again simply considered as sequences of bits (or to be more general, sequences of fixed-length units of information) and channel-coded, optimizing robustness.