The grep command requires a \\ to mean \, also in shell's double quote and non-quote. So When you Use \\ or "\\" in shell, a \ will be passed to grep. Since \ is an escape char in grep, a single \ does not match any char. So If you use "\\\\", it works.
@ And expansion turns two backslashes into a single backslash right?
yes.
@ How else do you prevent expansion besides with single quotes?
You can't.
@ Is this because of expansion like fpmurphy just mentioned?
Yes.
IMO, the shell syntax is badly desinged, since they are confusing. But, they are rigorous. You can grasp them in practice.
see also: [Chapter 7] 7.3 Command-line Processing
and the command 'eval'