参照渡しの場合、オブジェクトのコピーは作成されません。これが、参照渡しと値渡しの違いです。
内部では、参照はポインターとして実装されているため、アドレスがコピーされていると言えますが、それは実装の詳細です。
ただし、定式化は間違っています。
List がパラメーターとして渡されると、リストのすべての要素がコピーされます。リストへの参照の場合は、リストのアドレスのみがコピーされます。
リストまたはリストへの参照を渡すかどうかは問題ではありません。重要なのは、メソッドがどのようにパラメーターを取得するか (値または参照のいずれか) です。
void foo(list l);
void goo(list& l);
list x;
list& y = x;
foo(x); //pass a list by value --copy is made
foo(y); //pass a reference by value --copy is made
goo(x); //pass a list by reference --no copy of the list
goo(y); //pass a reference by reference --no copy of the list