I agree fully. It handles at least three important jobs:
- Padding: Adjusting the length of the message so it can be encrypted, and removing the adjustments when decrypting.
- Salting: Using a different key for each message.
- Chaining: Using a different key for each block of the message.