How to use drop tables on target when via drush sql-sync?
Drush sql-sync will not drop tables on the target unless you specify --create-db.  Note that the later drops and recreates the entire database; if you do not have permissions to do this, you could run drush sql-drop on the target first.

There has been a feature request to add this functionality (drop before sync) in the Drush issue queue for years: http://drupal.org/node/716412.  Patches welcome.

Important update:  On Drupal 7, if you drop tables on the target prior to sql-sync, you could run into trouble unless you have http://drupal.org/node/1996004#comment-7419764. This is fixed in 8.x-6.x-dev, but is not part of 5.9, 7.x-5.x-dev or 8.x-6.x-beta1.

Update 2: This fix has now also been committed to 7.x-5.x-dev.