On most modern systems, peripheral devices do not speak or control DMA directly. Rather, they communicate over a bus protocol (e.g. SCSI or ATA-over-PCI in the case of storage devices), and a special piece of hardware manages both the bus and the mechanics of DMA.
On PC hardware, this is known as the HBA (Host Bus Adapter), also known as AHCI controller (Advanced Host Controller Interface). This also handles things like device discovery and enumeration, so the OS can work out what devices are attached. I'm just going to use the term "host adapter".
The short answer as to why disk controllers don't write directly to RAM is that if you did it that way, every disk controller would have to be designed with every kind of CPU bus in mind.
I'm going to give two examples of why this would be an extremely complicated solution.
First example: cache coherency. When a DMA transfer occurs to some location in memory, you somehow need to ensure that any copies of that memory that are in some CPU's cache are invalidated. So in this scenario, every disk controller would have to be aware of every kind of CPU's cache coherence protocol.
Second example: interrupt delivery. When a DMA transfer completes, the CPU needs to receive an interrupt so that it knows that it is complete. Wait, did I say "the CPU"? I meant "a CPU". In a multiprocessing system, the OS decides which CPU receives which interrupts from which devices. So every disk controller would need to know about multi-CPU topologies as well.
On top of all this, DMA is a much more general concept than it used to be. Many modern host adapters can perform scatter/gather I/O, memory-to-memory copies (especially useful on NUMA architectures), and even device-to-device transfers. That last one is used in high-performance computing for low-latency network storage; some DMA controllers can burst data directly from a disk to a network card without passing through RAM or the CPU.
One last thing worth noting is that computers typically boot from disks, and having a simple non-DMA method for transferring data from disk to RAM, even if it uses CPU resources to do so, tends to be kinder on firmware and boot loaders.