That FAT32 doesn't support sparse files is a well-known fact. But that isn't even necessarily the limiting factor here; the size of a file on FAT32 is represented by an unsigned 32-bit integer, and is thus limited to one byte short of 4 GiB.
Some of the other details mentioned here are inaccurate as well. In particular, stat() returns both the file length and the size on disk; ls will typically display the length, not the size on disk.
Some of the other details mentioned here are inaccurate as well. In particular, stat() returns both the file length and the size on disk; ls will typically display the length, not the size on disk.