ma ho notato che gli altri elementi sono caricati prima dell'esecuzione di questa funzione
Esatto tutti gli elementi del DOM mi pare vengano creati prima che sia eseguito quello script. Quindi non serve nessun ready in questo caso ma non serve nemmeno quella IIFE a mio parere.

Anche se non da problemi, non ha alcun senso usarla; e non ha nemmeno senso passare il riferimento a jQuery perché, come ti ho indicato sopra, questa tecnica viene usata solitamente quando ci sono conflitti di librerie, in modo tale che la variabile $, quando usata localmente dentro la funzione, faccia esattamente riferimento a jQuery e non ad altre eventuali librerie definite invece a livello globale.

Nel tuo caso però non vedo altre librerie che possano creare conflitti, né tanto meno la variabile $ viene usata dentro quella funzione. Mi chiedo quindi perché tu abbia pensato di usare una cosa simile; non ce ne motivo in questo caso, tant'è che potresti eseguire quella porzione di script direttamente, senza bisogno di racchiuderla dentro alcuna funzione.