Your desired behavior worked automatically with my existing completion settings (which were generated by plodding through compinstall a few times), so I took some time to narrow down the particular settings that were responsible.
The core functionality is provided by the _expand “completer”. You can include it like this:
zstyle ':completion:*' completer _expand
If you are also using the _completer completer, then _expand needs to be listed first. For example, here is my actual completer setting:
zstyle ':completion:*' completer _expand _complete _ignored _match _approximate _prefix
Next, to enable brace expansion, you need to have substitute enabled. This is enabled by default, but you can be explicit about it like this:
zstyle ':completion:*' substitute 1
If you do not want this enabled everywhere, you can disable it globally and enable it just for _expand like this:
zstyle ':completion:*' substitute 0
zstyle ':completion:*:expand:*' substitute 1
I tested this with zsh versions 4.3.11 and 5.0.2 by starting a fresh shell with zsh -df and sourcing a file containing the following:
zstyle ':completion:*' completer _expand
zstyle ':completion:*' substitute 0
zstyle ':completion:*:expand:*' substitute 1
autoload -Uz compinit
compinit
(The options multios and no_ingore_brace (which is what brace_expand is aliased to) are the defaults, so I did not have to explicitly change them.)
Then, I typed cat <in{1,2} and pressed Tab. You will need to press Tab several times: once for each expanded variant and one more time to get to the “all expansions” entry (a total of three times for the above example); I did not find a way to make this particular entry come first.