The length limit per item is alike the length limit of a variable (name of table + name of item + data <= ~4140; name of variable + data <= ~4140).

My suggestion was about versatility only - not using a "block"-expression. And I rather wouldn't use backreferences (as they will slow down processing, whatever method you use).
Maybe you don't have 20 but 200 bad"words"... The length limit put aside, if you have a block-expression and there's e.g. some misfire it may be hard to find the erroneous chunk - especially without backreferences - in a multilined, $&-combined huddle-muddle.
If on the other hand side your items are discrete expressions (or manageable "chunks"), you can loop $hfind(table,<text>,N,R) for debugging. Depending on your regex skills, this can be quite handy - even if you don't intend to add/modify the expression(s) frequently, and don't intend to create a dialogue or the like.

It's no suggestion for those who cannot aford to spend a few kB of memory (*sniff*) or sacrifice one or two $ticks... (*whimper*) smirk