Some added notes…
There are essentially two variants of the Nano module. One does not have eMMC, but it does have the SD card slot on the module itself, not on the carrier board. Those are what “dev kits” have. There are also Nano modules which have eMMC, and those models of module do not have an SD card slot on the module itself.
There are also two variants of carrier board for Nanos. The “dev kit” variant does not have any SD card slot on it (the slot is on the module). Only third parties manufacture or sell the Nano carrier board variant which has the SD card slot on the carrier board. You would not find a combination of a dev kit module (with SD card slot) and a third party carrier board.
If the SD card slot is on the module itself (for Nanos), then the boot chain is different than if the SD card slot is on the carrier board. Moving the slot from module to carrier board is not as simple as just moving hardware from one location to the next. There will be changes in device tree and power (and power has its own device tree changes).
Furthermore, the actual boot software differs between a dev kit with SD card slot on the module, versus booting to eMMC on a commercial module that does not have its own SD card slot. The movement of the SD card slot from module to carrier board requires changes to boot software and to the carrier board and to the device tree. You might find for example that the order of bringing up power rails differs, or that a driver not needed except in Linux is now needed in the boot chain.
If you built the carrier board, then you’ll have to make sure that the reboot provides the driver in the boot chain and not just in Linux. You’ll also have to be sure the device tree finds that hardware. If all of that is correct, but the boot order for bringing up power rails is wrong, then it can still fail. However, NVIDIA has no knowledge of the workings of the custom carrier board, nor of the customizations you might have made to boot chain. Describing the schematic might allow seeing issues like a need to change power delivery or part of boot software to support the SD card slot on carrier board during boot stages.
If you only use the SD card slot after Linux loads, then there is rarely any issue. Mostly. However, the Linux kernel inherits an environment (there is a literal set of environment variables the kernel has access to). If the Linux kernel relies on environment to be set up during boot chain, then it is still possible for the Linux kernel to fail to find or use the SD card slot on the carrier board. Perhaps you’ve added changes which get put into the boot environment and which are inherited by the Linux kernel only when cold booting. I couldn’t say for sure, but if you know everything that was required to make the SD card visible during cold boot, and can see some part of it is missing in soft boot, then you have an answer.
One thing that comes to mind is that sometimes devices need “training” to step through clocks and rail voltages in order to be set up at optimum speed. This would always occur during a cold boot. It is possible that a soft reboot skips training since the hardware is already set up; however, if one assumes the hardware is set up, but it gets reset, then unreliable clock timings might still exist (but only on soft boot).