Still not quite sure if I like full broadcasting here at all, but you don't actually need this at all. Overall, I suggest to write this as:
```
slicing = [slice(None)] * max_ndim
for i, arr in enumerate(arrays):
    slicing[j] = slice(i, shp[j]*narrays, narrays)
    c[slicing] = arr
```