V PDO je o jednu instrukci navíc - musí se volat PREPARE - což má taky svůj smysl (může se umístit mimo cyklus). Navíc, díky dynamice PHPka to jde jednoduše zawrapovat.
Jádro pudla je v tom, že programátoři (ti, kteří dělají chyby o kterých se tady bavíme) jen matně tuší, co to je SQL injection a pravděpodobně vůbec nebudou tušit, co to je prepared statement. Takže i kdyby ve funkci query bylo možné použít parametry, tak je nepoužijí, bo nebudou tušit proč.
Třeba ještě s v ADO ve VB byl opruz používat prepared statements, a to se o PHP vůbec říct nedá.