How to make Drush rsync @dev @staging exclude some directories?
It's not so simple like just don't send the directory. 

Actually, you're synchronizing SQL and directories. If you want avoid some directories (specially modules) you should also avoid their tables and configuration sync. 

The best way its, from my point of view, to sync them and after to dis and pm-uninstall them in the staging process.