The way I see it is that if we had some rvalue reference x:
T&& x = ...;
and we called some function using x as a parameter:
f(x)
We need someway to tell f whether or not it can damage x (or "take ownership of x", or "is the last client to use x").
One way to design this would be to qualify every call:
f(yours_now(x)) // ok to damage
f(still_mine(x)) // dont damage
and make the unqualified call illegal.
Another way would be to make one way the default:
Either:
f(yours_now(x)) // ok to damage
f(x) // dont damage
or
f(x) // ok to damage
f(still_mine(x)) // dont damage
So if we agree qualifying every use is too bulky and we should default to one way, which is best? Well lets look at the cost of accidentally picking the default in both cases:
In the first case it was ok to damage, but we accidentally said it wasnt. In this case we lose performance because an unnecessary copy was made, but other than that no big deal.
In the second case it was not ok to damage an object, but we accidentally said it was. This may cause a difficult to detect logical bug in the program, as x is now in a damaged state as f returns, but the author expected it not to be.
So the first case is what was chosen because its "safer".