Dlaczego tak
Typ ENUM przechowuje dokładnie jedną wartość z podanej listy, a w trybie ścisłym serwer odrzuci każdą inną. Typ SET też ma listę, ale pozwala zapisać dowolną kombinację wartości, np. 'S,XL', co dla rozmiaru jednej koszulki jest błędne. VARCHAR(2) i CHAR(4) przyjmą każdy krótki tekst, np. 'XX', więc same niczego nie ograniczają.