One reason is limited memory and address space- the in-memory size of CP/M was something like 9K (including BIOS, BDOS and CCP). BASIC is at least another 8K. If you are using CP/M as a program loader, you don't want to waste that 8K.
Another is that BASIC was not extensible, at least not in any standard way. But CP/M was: to add a command to CP/M, you just add a .COM file of that name to the disk.