Помним/знаем о том, что set — битовая маска, может одновременно хранить несколько значений?
Эквивалент для tinyint — enum. (ну или set, но тогда с реализацией битовой маски, иначе зачем было set'ом делать?)
Если значение в 1 момент времени может быть только одно — enum.
Если несколько — set.
Просто потому, что текстовое представление легче воспринимается, чем числовое.
Все трое на идентичных диапазонах данных занимают равное место.
dev.mysql.com/doc/refman/5.1/en/storage-requirements.html