> I don't quite follow, why the extra to call if we can just slice the array?

Generates less object code. The code:
```D
    auto w = appender!(E[])();
    w.reserve(value.length);
    foreach (i, ref e; value)
    {
        w.put(to!E(e));
    }
```
Doesn't actually (statically) depend on the size of the static array. So there's no need to generate object code for the different functions for `int[1]`, `int[2]`, `int[3]` etc...

That said, in this case, it's probably trivial enough to not matter.