Is there a "Hold to Zoom" option for Sniper Rifles?

Without scripts, no.

However there are several scripts that can help you out, depending on what you're looking for.

The TF2 wiki has a page of sniper scripts, this one may be useful (It's a quickscope script however, not a 'hold to zoom'):

bind mouse3 "+qz;"
alias +qz "+attack2; wait 33; -attack2; +attack; wait 3; -attack;"

And This Steam Forum had this to offer:

// In sniper.cfg.
cl_autorezoom 1;

alias +snope "+attack2; wait 20; -attack2;";
alias -snope "+attack2; wait 20; -attack2;";

bind mouse2 +snope;

// In all other class-specific configs.
bind mouse2 +attack2;

Your cfg folder can be found here:

%PROGRAMFILES%/Steam/steamapps/%common%/team fortress 2/tf/cfg.

This guide will tell you all about your scripting and config files.