So mostly a parameter as string const& but sometimes as string when on function entry the parameter is altered.
The reason being that string const& prevents copying, but just "passing by value" string allows altering the parameter value.
Of course it actually is ugly to expose the intended implementation. Consider later on switching to the other method signature because of implementation change. No big deal, but the using code must be recompiled.
Consider a prescribed/imposed usage of only string const&. Requires sometimes the use of a new local variable taking the parameter and replacing its usages. Also no big deal/effect.
So the sole motivation for an attribute is to allow intentional exceptional usage of string, for style checking. Like [[unused]]. The only possible answer is "yes that is an intended usage of attributes."
But the name still is a problem ([[copy_used]]?) as pass-by-value against pass-by-const-ref does say little being mentioned one-sided.