I misspoke about the block size of an SD card. It's 512 bytes, not 256.
Anyway, another consideration is how to keep track of where you are - where you last saved data - in the event of a power failure on the Arduino side. If the data is preserved on the SD or EEPROM or whatever, you can pick up where you left off when power comes back on, but only if you can find where you left off.
For an SD card with no file system, I guess you would do a binary search beginning at the middle sector of the card, looking for the last sector that doesn't begin with 0xFF (or 0, depending on the card). But for each test sector you have to read in 512 bytes just to read the first byte (unless there's an abort command - I just don't remember).
With battery-backed RAM, you could just assign an address in RAM that contains the address, or at least the block, you last wrote to, and that would be updated after each data write.
But if you really need the large size of an SD card, you should consider writing directly to the sectors with no file system. You can pre-erase the entire card, so writing would be fairly straightforward and pretty fast. And I don't think it would necessarily be any less reliable than any other form of storage. I wrote an SD card bootloader for MSP430 a while back, and the commands for reading from and writing to the card are not all that bad. Most of the effort was dealing with FAT32. But there's no getting away from the 512-byte block size. So if someone pulls the plug before a block can be written, that data is gone unless you've provided for backup power for long enough to save it.