Потому что чтобы передать какой-либо агрумент по значению, его нужно скопировать. Чтобы скопировать аргумент, который является объектом класса, нужно вызвать конструктор копирования (неважно, сгенерирован ли он автоматически или вручную написан).
Т.о., чтобы "зайти внутрь" конструктора копирования, которому аргумент передан по-значению, нужно вызвать... конструктор копирования. Этого же класса. Т.е. этот же самый конструктор.
Вроде должно быть понятно.