Is combinedims optimized for StaticArrays?

In other words, does it reallocate or does it use reinterpret?

It definitely does allocate a new array. SplitApplyCombine.jl doesn’t depend on StaticArrays.jl and cannot define special behaviour for them. Currently, it could, with StaticArraysCore.jl, but this is a very recent addition and not implemented.
You may find combinedimsview useful for no-copy operations, no matter the input array type.