I think it's a matter of preference, really. Personally, when I'm designing prototypes then I tend to use SD cards because it's easy to download the firmware to them from the pc. However, in the final version the solution simply gets too expensive, so then a flash IC is much more economical and requires less board space. Since such a flash IC is always used in conjunction with a MCU or FPGA, downloading or updating the firmware can be done through JTAG, but is a lot slower.
I usually stick with Hynix NAND flash memory, but there are plenty of other manufacturers as well which have comparable products and are probably equally good.