Если производительность не важна, подумайте:
var combined = first.Take(insertPosition)
.Concat(second)
.Concat(first.Skip(insertPosition))
.ToArray();
Полагаю, это почти четыре шага, которые вы предложили, за исключением первого шага "приходит в конце".Однако обратите внимание, что это неэффективно по ряду причин, включая ненужный динамический буфер и избыточное частичное перечисление первого массива.
В противном случае, то, что вы предложили, прекрасно.