I often hear that you HAVE to use object pools to get decent mobile performance. I went to an official Unity talk about Unity 5 and they had a whole session on how important object pools are.
So wouldn't it be great if it was built into Instantiate?
In the end, even with zero setup, Unity could internally Instantiate prefabs, keep them in a buffer and dynamically reuse them, until memory dictates the oldest start being GC'ed.
You'd also need a few utility functions for manual pre-allocating of some prefabs.
A very simple way of setting the reuse condition (offscreen, time alive etc), or an interface to implement your own.
The profiler (or somewhere else) could benchmark typical game scenarios to get ballpark pre-allocate figures for different prefabs. This could be a simple benchmarking component you add to each level/area, so differences can be measured and configured separately.