But my objection is that for(1..3) construct doesn't do aliasing
That's not true. Exactly the same aliasing occurs for both for(1..3) and for(1).
"intentionally returns a modifiable value (in a sense) some of the times" mean
Intentionally coded to return a value that can be changed without causing a read-only error.