A Vector of StaticVectors is equivalent in memory representation to a matrix, so in theory it should work.
But yes, I agree it’s a bit clunky sometimes to use VectorOfArray because its indexing is A[i,j] but then A[i] is the iteration of the vectors. This can break some generic assumptions. It was an idea in 2016 which I don’t think panned out: I think we need to change it so its indexing is always scalar. Though that would break the interface in DifferentialEquations.jl so it’ll need a major version bump there. We will need to do that sometime though, that and change of retcodes from Symbol to Enum are what are currently slated as the DiffEq v8 changes. Once that indexing change is done, all of your examples here should work without any workarounds.
In the meantime, your case might be better done with views of a Matrix, which also shouldn’t allocate. Or you can use reinterpret to change a Matrix into an array of staticvectors at any point without memory allocates (since it’s the same bit layout), so that’s another possibility.