There's a -F parameter you give to mkfs.vfat which determines the FAT type to use, -F 12, -F 16 or -F 32... the default will vary between 12 and 16 depending on whatever fits best for filesystem size, which would explain why you ended up with FAT16. You have to explicity specify -F 32 to get a FAT32 filesystem. Here's the man page for mkfs.vfat.