Creo que es en gran parte por razones históricas.
Un descriptor de archivo de Unix es un pequeño intvalor, devuelto por funciones como openy creat, y se pasa a read, write, close, y así sucesivamente.
Al menos en las primeras versiones de Unix, un descriptor de archivo era simplemente un índice en una matriz de estructuras de tamaño fijo por proceso, donde cada estructura contiene información sobre un archivo abierto. Si recuerdo correctamente, algunos sistemas tempranos limitaron el tamaño de esta tabla a 20 más o menos.
Los sistemas más modernos tienen límites más altos, pero han mantenido el mismo esquema general, en gran parte por inercia.