You could always use a drush aliases file on your dev server and set it up to skip the cache tables when you run sql-sync. The following would create aliases for your local dev server and your remote live server:
$aliases['dev'] = array(
'root' => '/var/www/devroot',
);
$aliases['live'] = array(
'root' => '/var/www/liveroot',
'remote-host' => 'www.mysite.com',
'remote-user' => 'exampleuser',
'command-specific' => array (
'sql-sync' => array (
'skip-tables-list' => 'cache,cache_menu',
),
),
);
If you saved that under your home directory at:
~/.drush/mysite.aliases.drushrc.php
then you can call your sql-sync command like so:
drush sql-sync @mysite.live @mysite.dev
and it should skip the cache tables (obviously I only listed 2 there, but you could put anything in there, I even add watchdog in).
For more info on aliases and all the various options, check out the example file in your drush install at drush/examples/example.aliases.drushrc.php
As a last note for anyone who trys to use sql-sync, I had authentication issues when I first ran it, so if someone attempts this and gets errors about public/private keys then do the following:
drush dl drush_extras
drush pushkey @mysite.live
drush @mysite.live status
The pushkey command from drush_extras creates a private/public key pair and pushes the public key to the live server. The last command is just to check that it worked.