When you're doing a simple insert query:
[PHP]
<?php
$data = array(
'created_on' => '2007-03-22',
'bug_description' => 'Something wrong',
'bug_status' => 'NEW'
);
$db->insert('bugs', $data);
[/PHP]
the query is prepared first and then executed which ends up in
TWO SQL queries send to the database server. Now imagine inserting 20.000 rows in a loop = 40.000 db queries with a huge amount of prepare overhead.
Usually you would prepare the statement by yourself one time and then just change the values being issued and executed the former prepared statement, which is 20.001 queries

Prepareing a statment is not bad, but in this case you're just not aware that it IS prepared and you have no chance to disable automatic prepares in ZF right now.