yaffs is required because of the nand - there's the possibility of bad blocks appearing anywhere and at anytime, and the file system must support this and relocate blocks appropriately.
vfat is required because the most popular os is Windows, and windows doesn't support yaffs.
So, we have a mixture of both.
Of course, if you mount the gp2x as a samba device, it doesn't matter what file system it uses, as it only deals with files. But if you mount it as a usb mass storage device, then only sectors are transferred, and so the host os needs to know how to handle the file system.