Both GPUs memory is used when in Crossfire, 4GB wouldn't get used though if you have one with more RAM than the other. Each GPU needs a copy of the same data it needs to render which is why both lots of GPU memory is needed. So if it were me I would get two of the same cards whichever way around you want to do it. It would also be a bit more future proof to get 2x 8GB but only really if you are going to be using a high res display for the most part. Games are only going to use more GPU RAM over time not less after all.
Well, it seems like if his 4GB GPU was "first" in the chain or pair for x-Fire, then what would be mirrored would be the 4GB card, which the 8GB card could of course handle with ease. That should work, I'd think.
Also, although I have yet to see a game with a *true* D3d12 engine supporting it (such an engine would require a d3d12-hardware card, too--as opposed to simply "supporting" a D3d12 card), d3d12 allows developers to actually use all the memory in a two-card xFire setup without mirroring--that is, a 4GB and 8GB card would have 12GB's actual VRAM available to the game! Two 8GB cards in xFire would have 16GBs of total VRAM game memory available--no mirroring, etc. But as I say, no one has written a game engine that does that, yet...;) It may be awhile before we see one, maybe, because it will require a brand-new engine and it will *require* a D3d12 hardware GPU. Until then, though, mirroring, as you point out, is a requirement of current xFire-supporting/allowing game engines...
If it is strictly a matter of moola...;)...then I would opt for the 8GB card first and then later buy another when I can afford it, so I'd agree that a matched pair is just a better choice.