First of all, as question, which i.MX you are using? i.MX6SX, i.MX8M? etc ...
Second, which version of BSP from NXP you are using?
But technically, it is not a question of i.MX Processors community.
QSPI nor flash using simulation of linear address as parallel nor flash.
Read QSPI nor like read a parallel nor flash. Linux layer, you will find it is using mtd driver as parallel nor does.
QSPI nor uses quit different way to access. The QSPI controller has register to map the address.
Of course, if really want to separate it. You need to know which mode of QSPI, Individual Flash Mode? Parallel Flash Mode?
The QSPI nor flash connect to the QSPI controller(here is imx QSPI interface) is a flash supports QSPI mode. not a spi nor flash. this kind of flash need to configure the settings to use it.

3B, 4B address is for spi nor.
If you read the linux source, you will find it will switch the address mode 3B/4B by nor flash size.
Have you ever read the linux source code?
The code is linux code not i.MX flexspi/qspi/spi controllor code.
Because you questions are very confusing. could not tell what you want to ask? about a QSPI nor or spi nor? questions are contradictory to each other.
rel_imx_4.14.98_2.0.0_ga
linux-imx/drivers/mtd/spi-nor/spi-nor.c
linux-imx/drivers/mtd/spi-nor/spi-nor.c
int spi_nor_scan(struct spi_nor *nor, const char *name,
2709 const struct spi_nor_hwcaps *hwcaps)
2865 nor->addr_width = info->addr_width;
2866 } else if (mtd->size > 0x1000000) {
2867 /* enable 4-byte addressing if the device exceeds 16MiB */
2868 nor->addr_width = 4;
2869 if (JEDEC_MFR(info) == SNOR_MFR_SPANSION ||
2870 info->flags & SPI_NOR_4B_OPCODES)
2871 spi_nor_set_4byte_opcodes(nor, info);
2872 else
2873 set_4byte(nor, info, 1);
2874 } else {