From what I understand, the main difference between UTF-16 and UTF-32 is that UTF-32 is always four bytes per character, while UTF-16 is sometimes one byte and sometimes two bytes per character. This gives UTF-16 the advantage of taking up less memory than UTF-32, but UTF-32 has the advantage of constant time access of the n'th character.
My question is, if you can represent every unicode character with at most two bytes as done in UTF-16, then why isn't there a format that always uses two bytes to encode each character? This format, while being slightly more memory expensive than UTF-16, would be strictly better than UTF-32 by allowing constant time access while using half the memory.
What is my misunderstanding here?