Se você planeja instanciar muitas instâncias da mesma pré-fabricada, definitivamente deve pensar em usar o pool de objetos. Chamar a função Instanciar do Unity é um dos métodos mais exigentes que você pode fazer.
O pool de objetos é quando você instancia as prefabs antes de serem usadas. Eles são desativados imediatamente após a instanciação e reativados somente quando são necessários. Enquanto isso aumenta o uso de memória, evita a sobrecarga da CPU de instanciar durante o jogo.
Por exemplo, atualmente estou trabalhando em um jogo de balas que exige que centenas de balas sejam geradas em tempo de execução. Inicialmente, tentei fazer o jogo sem o pool de objetos, mas isso acabou sendo um desastre (menos de 2 qps). Agora, acumulo 500 marcadores antes do jogo começar e o jogo corre surpreendentemente rápido (200 fps).
Há situações em que o pool de objetos não pode ser usado. Por exemplo, se você tem um jogo em que a entrada do jogador determina qual pré-fabricada é gerada, talvez você não tenha outra opção a não ser usar a chamada Instantiate normal. O pool de objetos só é possível quando você sabe com antecedência quais objetos serão necessários.
O tutorial do YouTube de Sebastian Lague é um ótimo recurso para aprender sobre pool de objetos: https://youtu.be/LhqP3EghQ-Q