The highlighting here:
The dynamic linker then finishes the linking task
misses the important word, “finishes”. The linker, ld, starts the linking task, performing as much as possible at build-time and preparing the data structures required to finish it.
The loader can then finish the linking task as it loads the program and the libraries it needs: matching up symbols, and performing the necessary relocation.
In CSAPP’s terminology, the dynamic loader is the in-kernel ELF loader, and the dynamic linker is ld-linux.so.
The GNU C library’s own documentation refers to ld.so as the dynamic linker/loader. ld.so (or ld-linux.so) performs quite a lot of loading itself, as well as linking, so applying both terms to it is accurate — the kernel loads the executable itself and its interpreter (the dynamic linker/loader), and the interpreter loads all the other required libraries.
See How programs get run: ELF binaries for details of how this all works on Linux systems.