SD and MMC cards contain a controller chip that performs the operations needed to interface with the storage media. in earlier versions of the SD/MMC the storage media was NOR flash, however newer versions use NAND due to its larger size. when using a SD/MMC, the card is responsible for doing crc checks, wear leveling, block unlocking/erasing, and bad block management. in other words, all of these functions are hidden from the device it is used in.
xD and SmartMedia cards are nothing more than a NAND flash in a removable media package. they do not contain a controller chip, which means crc checks, wear leveling, block unlocking/erasing, and bad block management have to be performed by the host device.
the juicebox was designed to use NAND flash on a cartridge OR a SD/MMC cartridge. when the onboard firmware boots it does two basic checks based on the gpio lines discussed in the UMD cartridge modification. it checks to see if the gpio lines indicate a NAND flash cartridge, if so it copies some code from the NAND flash and then jumps to the code. if it finds the gpio are configured for a SD/MMC it starts the code on the INTERNAL rom. since we need to run our program the only choice is to use NAND flash. the NAND flash is the only thing the internal ROM software will use to boot an outside program.
so basically it works like this, we trick the internal rom into thinking there is a juiceware cartridge plugged in. it copies the linux bootloader into ram and starts it. once the bootloader is running it can access the kernel and root filesystem from anywhere that the bootloader supports.
hope that clears it up