Dear Juergen,
Every place that I use ⎕ES I am being forced to treat the arguments as read-only. I also had to re-order code to account for optional arguments. It makes for some ugly code. I hope when you add lazy copying of arrays, the internal code to do this correctly won't be a problem.
Showing it as a locked function, IMO, is very important. The point being that you are telling the user, don't worry about what is inside, it doesn't matter, you passed the wrong arguments. If it didn't work this way, the user/programmer would think the function they called (the callee) had the problem. It is telling them the problem is with the caller and not the callee.
As commented by Kacper, it is in the spec - section 11.5.7.
Thanks.
Blake