Я cp руками уж лет 20 не дёргал, поэтому все “нюансы” из головы давно вылетели, но тут пришлось и я с удивлением обнаружил, что это чудо не копирует директории, пока его специально не попросить об этом.
Интересно, какая была для этого причина? Почему для копирования директорий я должен использовать дополнительные параметры?

Тогда ты, конечно, покажешь нам, как прочитать содержимое директории, используя системный вызов read?
К чему такой странный вопрос? Тоже хочешь букварь почитать?
Есть regular files и есть special files. Директория - это special file. Очевидно, что, именно поэтому, она не читается при помощи read. Хотя, в старых добрых настоящих юниксах, на старых файловых системах вроде читалась.
Это никак не отменяет того факта что директория это файл.
А почему это всякие разные special files, ну, например, /dev/null, /dev/fb*, /dev/input/event* и т.д, читаются при помощи read?
Читать нельзя, писать нельзя, очень полезный файл. А что такое файл, кстати?
Потому что они разные.
Как это?? Ты не можешь зайти в директорию? Не можешь файлы создавать в директориях? Что у тебя за ОС такая интересная?
Ну да, не могу использовать read/write, чтобы читать/изменять каталог.