The SD cards must have ECC inside them; otherwise they would be unusable. Modern NAND flash chips require ECC to work at all (bit flips are part of "normal" operation). Even SLC flashes now require 4 bits correction capability, MLC and TLC flashes much more. Consumer-grade SD cards seem to lack proper wear levelling and die when some areas are written more.
There are enough industrial quality SD card vendors, even in micro-sd format. For example Swissbit, Panasonic, Apacer Industrial etc. If SD format is preferred, go for them. But the advantage of removable storage is the possibility of user swapping in whatever flash they want and that causes problems if they use inferior quality flashes. In these cases, reducing the functionality by having on-board flash is a good choice.
Driving an eMMC chip using microcontroller SDIO interface is not too difficult. The lower layers are the same (sending commands and payload data). Commandset-wise they are somewhat different (at least initialization). Download the eMMC spec (free) and just re-write the init commands. The spec may be frightening at first, but go for the state diagram and command code list for better overview. As the chip is soldered on board, you can probably avoid most of the auto-detection and just hardcode the geometry.
The eMMC has 8-bit interface, that is good for performance without getting clock rate too high. I've used eMMC flashes on STM32F2 uCs and the data rate was limited by the eMMC chip itself (we wrote the whole code ourself). When going for high-performance, read thoroughly the random-access specification of the eMMC chip. Linear bulk transport figures are specified for very large buffers (ie 1MB) and that is not available on uCs. You should see the random-access performance numbers, these are written as IOPS (read small print: IO operations per second for 4kB blocks). There is a large penalty of starting a new transfer and even for double-buffered 2x32kB blocks, you wont get near the linear transfer rate. But 200Mbit/s read rate is totally possible using ver 4.51 Micron chips.
On larger application processors, using eMMC instead of SD card is usually easier as the eMMC layer drivers in Linux and u-boot are already there and the SDIO controller does not care. Usually just designing the eMMC instead of SD socket works with very little effort.