BIT должен разрешать только 0 и 1 (и NULL, если поле не определено как NOT NULL). TINYINT (1) позволяет любое значение, которое может быть сохранено в одном байте, -128..127 или 0..255 в зависимости от того, является ли оно беззнаковым (1 показывает, что вы намереваетесь использовать только одну цифру, но это не помешает вам сохранить большее значение).
Для версий старше 5.0.3 BIT интерпретируется как TINYINT (1), поэтому разница * отсутствует.
BIT имеет семантику «это логическое значение», и некоторые приложения будут учитывать TINYINT (1) одинаково (из-за того, как MySQL использовал его для обработки), поэтому приложения могут форматировать столбец как флажок, если проверьте тип и определите формат, основанный на этом.