I’m not positive, but I think one of the reasons why there is support for some USB boot devices, but perhaps not PCIe, is because the there is already USB support in the boot loader. I think the SATA controller is not a PCIe device, and probably avoids the need for PCIe during boot loader stage…which is why perhaps a USB SATA external drive works.
I’m unsure of USB structure in the boot loader. In a running Linux kernel there is a hot plug layer which announces devices as they enumerate…this is a non-intrusive generalized mechanism. I don’t know if u-boot has any kind of general messaging mechanism, or if each individual driver has to somehow be directly coded (without a general asynchronous messaging system) into USB enumeration in an intrusive way.