I imagine it is because gcc -o is a convenient way to call the linker such that it correctly links the binary and libc. Doing this manually with ld would require several (non-portable) command line arguments that would be distracting from the main point of the post.
GCC is a front-end: in this case, it should just call ld.