You can at least save the options partially in a variable:
opts=$(echo --{ignore-case,word-regexp,count,exclude="sys*.*"})
Testing is important, because masking can be difficult:
echo $opts
--ignore-case --word-regexp --count --exclude="sys*.*"
grep $opts bytes *.log
Since there are multiple alternatives, like using the history, using an alias, using a function, there is no obvious use-case I can think of. There is seldom a complex option sharing between different programs, so for an ad-hoc solution for the interactive shell, aliasing seems a better way:
alias cgrep='grep --ignore-case --word-regexp --count --exclude="sys*"'
cgrep bytes *.log
Your sample
VAR=rsync -avz --{partial,stats,delete,exclude=".*"}
can't work, because the assignment is endet at the first blank. You have to mask the blanks:
VAR='rsync -avz --{partial,stats,delete,exclude=".*"}'
a pretty dangerous thing for testing, with that --delete option, isn't it? Since options can contain again "," and single quotes, masking can get difficult very soon. I would go for an alias or rely on the history.
An alias can be stored in the ~/.bashrc file for continuous use over multiple sessions. Functions can be stored in the bashrc too, but you only need them, if you want to handle parameters, passed into the function to be evaluated therein.