Mah, leggendo un po' in giro ho sempre letto che è molto meglio fare il prepare statement esternamente al ciclo e internamente fare il bind dei valori proprio per averne dei benefici, tra i quali ridurre le sql injection.
Per quel che ne so io, è come se viaggiassero su due canali diversi, il prepare e i valori in bind o in un array (che poi è praticamente quasi la stessa cosa), quindi a ragion di logica se tu prepari la query una sola volta e ti limiti a passargli i valori da sostituire, senza ogni volta ripreparare la query dovresti averne dei benefici.

Prepared statements allow you to make multiple similar queries more efficiently. You can prepare (for example) an insert statement, then loop over it with multiple bits of data and get a performance boost as the database has less work to do as it doesn't have to set it up each time.

Tanto per citarne una, o dal sito ufficiale:

Calling PDO:repare() and PDOStatement::execute() for statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client and/or server side caching of the query plan and meta information, and helps to prevent SQL injection attacks by eliminating the need to manually quote the parameters.

Quindi parrebbe che di differenza c'è ne sia.