The best way of dealing with via-in-pad requirements is to have the vias filled and plated over at the board house. There can still be some issues with that technique, but if done right, is very reliable and the best way to go. But, what do you do for a Klondike bar? I mean what do you do if you can’t afford to fill and plate over your vias, or don’t have the time? Well, if your vias are in a BGA pad and you don’t want to have them filled and plated over, than you can just go back to the drawing board because your board most likely won’t work. There may be some secret, prototype-only things that your assembly house can do, but avoid it at all costs.
If your vias are under a QFN or SOT-23 or something bigger like that, you have more options. Don’t leave them open. Worms will use the open vias as homes. You can usually use soldermask to cap your vias in cases like this.
C is not an option. A and B can work. D can work also, but should be your last choice. With the tight masking like in A, most manufacturers recommend that the soldermask cap be about 100 to 125 micron wider than the diameter of the via. B is self evident – just make it bigger.
The pitfalls with D are that solder will still get sucked down into the via which can lead to excess voiding. Or, the via cap could pop open which results in effectively a C. With all soldermask via caps, top ot bottom, you need to check carefully to ensure that the soldermask gives a complete seal. And there is always a risk of the cap breaking. Ugh. Now do you see why everyone recommends filling and plating?