I guess this is a matter of preference.
Bit fields are implementation-dependant, so your code might work with one compiler but not with another. Also, assigning bits using bit fields might result in a read-modify-write for each bit assignments, while using bit masks result in a single write:
> reg.bitA=1; reg.bitB=1; vs reg=MASK_A | MASK_B;
Reading a single bit using either mask or bit field generates very similar copmpiled code:
> if(reg.bitA)... vs. if(reg & MASK_A)...