Qt applications don't compile with support for that by default IIRC (for instance, printf() will execute but nothing will appear on the console unless you change how it is built.)
I'm not sure why dbus appeared, but I'm guessing there are limitations in the methods you describe that necessitated it... can't say for sure.
For bootloader and kernel you have OneNAND devices (packaged with your RAM and installed on top of the SoC,) which still accept raw NAND commands. Generally, however, this is one or two devices set up in a certain fashion to act like one.
It is quite flexible, but eMMC lets you hide all the NAND + FTL complexity behind a standard block interface and share a driver with your SD card. It also dodges the issue that a lot of filesystems geared towards raw NOR/NAND devices don't behave well on larger devices (more CPU, more RAM.)