この辺りは結構難しいところで、たとえば「Rc / Arc は wrapped な値を clone しないから、 rc.clone() ではなく Rc::clone(&rc) のように書くべきだ」などの派閥が存在する
個人的には Clone trait でいいじゃんと雑に考えている。
ラッパーで既存トレイトや検査の性質をオプトアウトしたり変化させるというのはちょくちょく例があって、たとえば shared reference についても RefCell や Mutex を使うことで immutability を排している。
Rc / Arc も同様に捉えていて、 Clone の意味論を例外的に上書きするラッパーとして捉えるのはそんなに不自然ではないなと
もちろん、そういう意味論や期待の上書きを濫用するなよというのはもちろんだし、標準ライブラリでどうしても皆が欲しがるものとして提供されているからこそ受け入れられているところはある