Насправді було кілька варіантів "FAT16" протягом багатьох років з різними обмеженнями, але давайте розглянемо версію, що зберігалася від "compaq DOS 3.31" до Windows 95.
Обсяги FAT поділяються на кластери. Кожен кластер складається з потужності двох секторів. Кількість секторів на кластер FAT16 зберігається як 8-бітове підписане число. Отже максимально можливі сектори на кластер - 64.
Номери кластерів зберігаються у вигляді 16-бітного неподписаного значення. Обмеження загальної кількості кластерів до 65536. Помножте на максимальну кількість секторів на кластери, і ви отримаєте ліміт 4194304 секторів.
Розмір (логічного) сектора жорстких дисків - 512 байт. Помножте це на обмеження кількості згаданих вище секторів, і ви отримаєте свій ліміт 2GiB. У принципі, середовище з більшими розмірами сектору може підтримувати більший обсяг FAT16, але я не думаю, що це сталося на практиці.
Windows NT змінив інтерпретацію поля "сектори на кластер" на 8 біт без підпису. Це дозволило розділити 4GiB FAT16 з 512 байтовими секторами (і теоретично більшими на дисках з більшими секторами). AIUI Windows 98 додала підтримку для читання та запису таких розділів, але створити їх не вдалось, і дискові програми не змогли їх відновити.
Звичайно, можна було б відносно незначні змінити формат файлової системи для підтримки великих кластерів і, отже, більших обсягів. Однак MS вирішили скористатися більш радикальним варіантом переходу до 32-бітового кластерного індексу з Windows 95 OSR2, що виробляє FAT32.
Я вірю, що причиною більш радикального варіанту стала ефективність використання простору. Зважаючи на типові розміри файлів на той момент кластери 32кіБ вже були досить марнотратними, а більші з них навіть так би перенеслись.