How to pass dynamic array parameters (Float or Vector) to materials?

Material Parameter Collections aren’t a “hack” solution for this, it’s the primary way you’re intended to pass global scalars and vectors into materials. I don’t see why this wouldn’t work fine for what you described.