Two problems: characters that are special to the shell, and characters that are special in regexes.
The open bracket
[ has a special meaning in the shell's filename expansion patterns, which is what zsh refers to with that error. You can tell it to take the characters literally with quotes. Either single or double quotes should do, but single quotes are better, they have less exceptions.
In regexes, an initial
^ tells to anchor the pattern to start of line, and
[ has a special meaning similar to the one it has in the shell. So you need to tell
grep to treat both of them as literals, this is done by escaping them with backslashes.
bindkey | grep '\^\[G'
Note that the
^A in the output of
bindkey is the two characters
^ (caret) and
A (uppercase letter A), while what that combination stands for in the key bindings is Ctrl-A, the control character with numerical value 1. Grepping for that character would be different.