Is drush required on the remote server to do sql-sync or rsync operations?
Drush is needed on the remote server only to fetch the database credentials for the remote system.  If you declare your databases array in the site alias for your remote systems, then Drush will not need to have Drush installed on the remote machine to work.

I don't remember if I explained this in detail in the book, but there is an example on how to define database records in aliases in the example alias configuration file, example.aliases.drushrc.php.  Also, try running drush @site sa --with-db to see the whole site alias record for the given site with the databases array included.  This won't help you if Drush is not installed on the system where the site is installed, but you can run it on a local site, and edit the result to match the necessary settings for the remote end.