From wiki:
Android External storage
"Most Android devices include microSD slot and can read microSD cards formatted with FAT32, Ext3 or Ext4 file system. To allow use of high-capacity storage media such as USB flash drives and USB HDDs, many Android tablets also include USB 'A' receptacle. Storage formatted with FAT32 is handled by Linux Kernel VFAT driver, while 3rd party solutions are required to handle other popular file systems such as NTFS, HFS Plus and exFAT."
FAT32 is legacy, but also popular since many set top boxes only come with drivers for this file system. The reason for this is IP laws as far as I am aware (patents?). I think in the ideal world a "neutral" file system based on GNU/Linux projects such as ext3/4 would be used as those file systems are modern and open source, but again maybe the GPL prohibits the use of a kernel-level file system module without open-sourcing large parts of kernel code, I'm not sure.
Android uses the linux kernel. The file systems available are numerous. I don't know which file systems are compiled into the linux kernel used in most android distributions, but XFS, ZFS, Btrfs, ext2,3,4, fat** are supported, amongst many many others. I believe most androids uses yaffs (yet another flash file system) for its own internal storage, but if you install a custom ROM you can choose any of the other file systems optimized for flash (ext4, btrfs?).
http://en.wikipedia.org/wiki/Comparison_of_file_systems
The "4gb limit" coincidence/conspiracy comes from a simple reason: 2^32 ~= 4 billion
When FAT32 spec was written, it contained values that are chosen for things like cluster size, maximum clusters, maximum file size. From wiki for FAT32 regarding 4gb files: "This limit is a consequence of the file length entry in the directory table"
Speculation: Back then they chose 32-bit numbers to describe these limits as these fit into the data registers of a 32-bit processor and it was most likely believed that 4gb files would never exist in their lifetimes. It would obviously be a simple matter to describe these values using a 64-bit number to fix this issue, which the cpu would handle by simply splitting the number into two 32-bit numbers to fit into the 32-bit registers (or push them onto the stack instead, not entirely sure) (see: virtually any modern file system that runs on 32-bit machines capable of >4gb files [ext*, ntfs, btrfs, zfs, xfs, etc]). Yes, 32-bit machine can process numbers that are >32-bits, just as 64-bit machines often have to process numbers that are >64-bits. EDIT: This is loosely related to to the reason a 32-bit processor can only address 4gb of ram. I believe it has to do with a 32-bit register being used to map out the available memory, and with only 32-bits of address space, you get 4gb. Although, again, there are methods of addressing more than 4gb of ram to overcome the 32-bit register limit (See PAE:
http://en.wikipedia.org/wiki/Physical_Address_Extension)
EDIT: I'm not a file system expert but this took me all of ten minutes to look up, why argue about it here