Arduino Fan Control: BJT vs MOSFET
My up-front advice is to use the 4-wire version. It is much easier to work with, and widely available nowadays in any form factor you want (especially a big 120mm one like you're proposing.) Because the chop rate is so high (25KHz or so) they don't have acoustic noise problems.
You should only consider 3-wire or 2-wire if your design has to be extremely low-cost.
2 Wire
If you use 2-wire, you can use low-side chop. I'd lean towards a pair of 2n7002's in parallel - that should be plenty for this fan. If you use a BJT you need to make sure that there is adequate base current when the PWM pin is high - not a given thing. Check the ATMega datasheet. Consider a 2N2222 instead of 2N3904.
3-Wire
If you use 3-wire (that is, one with a tach) there's a couple of issues:

You cannot use low-side chop. This will mess up the tach signal. Use high-side chop (P-channel FET is easiest).

Even with high-side chop, the fan voltage can't go completely off: it will need smoothing so the BLDC controller chip will still make the tach signal. Add a cap across the switch device; its value will depend on your PWM switch rate and how much control you want.


One more thing: with a brushless DC fan, the catch diode is not necessary.