You shouldn't be trying to access a partition on the SD if it's superfloppy (partitionless) formatted - just use the device itself. I don't think the gp2x has a mkdosfs utility, so I'm not sure you'll be able to format it in the gp2x. GPH should really add this in an update if it's not already there.
EDIT: it's possible the gp2x kernel is transparently dealing with partitions, and making the partition appear as the actual device - if that's the case, it's an ugly ugly way to do it, and it would mean it would be difficult/impossible to repartition an SD card on the 2x, but hopefully they're not doing that.
For catting the firmware to the NAND, I mean something like "cat firmwarefile.bin > /dev/mtdwhatever", although dd would work as well. Actually dd may be more efficient if you specify a block size corresponding to the erase size from /proc/mtd. Flash chips like these erase the chip a block at a time (setting the block to all 1's), and then program individual bytes (changing the required 1's to 0's). 'cat' could potentially choose to use a strange block size and make the flash chip erase a block more than once to write all the data.
If anyone makes a script to update firmware, they should add in some safeguards, like making sure the file is the right size, checking /proc/mtd to make sure the mtd numbers are as expected, etc. md5summing the firmware file and comparing it to a known value wouldn't be a terrible idea either, assuming the gp2x has this utility.
What sucks is there's no text output ability inside the kernel unless you've got a serial cable, so flashing would kinda be a "run the script and if it doesn't finish in a few minutes, hope it isn't bricked" affair. I'm not even sure you could reboot the unit from the script if you flash the root FS - linux needs to load the reboot command to do that, and buffers won't be correct wrt the filesystem anymore. Although, I noticed there's a terminal emulator sdl app out there now - that could be good for flashing firmware...