The problem is that if you change it to "REDIM ArrayName(number) AS type", it does create a new array with scope LOCAL.
This is undocumented (Help just says that "as type" is optional).
ISTR this "phenomenon" being reported by others in the context of "procedures, " not just in the context of "Interfaces" ... anything other than simple 'REDIM arrayname(new_bounds) [ end of statement]
' will create a 'new' array using the type and scope specified.
I just, out of force of habit now that everything works, always do this:
Procedure Foo (params)
LOCAL arrayname() AS type ' define the symbol
REDIM arrayname (number) ' create the array so it exists and may be used
' datatype and scope already defined above
Apparently I won't have to change anything should I desire to create my own INTERFACEs with METHODs.