I haven't heard about "it should only be used for pattern matching." Is there a performance reason or something more stylistic?
I use them all the time because of all the convienence associated with them. I'm not really aware of the downsides except for the ~22 parameter limit (I hit it when deserializing JSON that represents many possible Option(al) keys... And named parameters are awesome).
OTOH what's done is done and I don't think one needs to eschew an idiomatic concept just because the people who designed it suck at naming.
Another example is 'case class', because of its heritage I have colleagues who insist it should only be used for pattern matching purposes. I strongly suspect that if the designers were to do things over again that what we know as 'case class' would just be called 'class'