Good insights.
Isn't that backwards from the concept of a const? I mean, we don't use const for variables and then expect them not to change.
That would be a great addition to the documentation, and perhaps a bit how to use constants recursively and appropriately. Right now, much of the dynamic use of GDscript is too esoteric, and I'd be glad to help make it more exoteric. But there's much that's unclear conceptually.
To this end, the follow-up question perhaps is: what's the benefit of passing arrays only by reference? Is there a proper use for this? Otherwise, how is one supposed to use a const set of array-data recursively? The trouble is that if it constantly reassigns data in the original, then is it supposed to only be used like a template? And thus users must be careful not to inadvertently change their 'original' template data?
One can duplicate it, and perhaps that's the proper way. But a modifiable template seems different than both a const or a var. Maybe I'm missing something here.
Similarly, what use is a constant reference to an array? What's the use-case of that? Aren't references always constant in a language? I believe the original declaration always captures the reference? I've never had a case where my variable name referenced something different than it's own contents.
It seems much more straightforward to me (although I've only been using gdScript for a few months) to use a single-standard for constants (i.e. that right-hand assignations are immutable when typed 'const'), rather than a double-standard, where arrays and enums are 'exempt' while single declarations aren't. Certainly the engine is doing something different than I'd expect, but what might that be?