Причины следующие (кстати, они не являются вескими причинами):
1) Y / N может быстро стать «X» (для неизвестного), «L» (для вероятного) и т. Д. - Я имею в виду, что лично работал с программистами, которые так привыкли не собирать правильно требует, чтобы они только начали с Y / N как своего рода «флаги» с суеверием, которое может потребоваться расширить (до которого они должны использовать int в качестве идентификатора состояния).
2) «Производительность» - но, как было упомянуто выше, индексы SQL исключаются, если они недостаточно «избирательны» ... поле, имеющее только 2 возможных значения, никогда не будет использовать этот индекс.
3) Ленивость. - Иногда разработчики хотят выводить напрямую на какой-либо визуальный дисплей с буквой «Y» или «N» для удобства чтения, и они не хотят сами конвертировать его:)
Есть все 3 плохих причины, которые я слышал / видел раньше.