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.