Thanks for pointing me to that previous discussion. It seems to me that they are discussing more complicated uses than my trivial examples. In my examples, the opaque types would be useless without the apply methods in the companion objects, and those apply methods are trivial boilerplate. So why not just eliminate the boilerplate? Not a big deal either way, of course.
Also, wait until you need to do things with those new types, you need to start adding extension methods or a simple get or toString that returns the original value.
Again, the “problem” is that for the language authors, opaque types are more powerful than plain new types, which allow more things. For example, if you need validations.
So for now, you need to live with the boilerplate, and probably in future libraries like scala-newtype will probably provide a simpler way.