Seems like looking for statistical anomalies and watching them more closely, or auditing their work would be a better way to handle this.
At some point you could consider making it economically viable for miners to "spot check" work units conducted by other miners, and if another miner finds enough blocks the other mining operator apparently missed in the past, then miner deemed to have originally witheld that solution.
Perhaps pools publishing detailed statistical datasets for every miner operating on their pool; including the listing of complete work units they claimed to have exhausted. And every time the pool solves a block, set aside 0.02BTC of the generation (or some other fraction) towards a heavily secured "security/bounty fund".
Partially as a reward for reporting or correcting nefarious activity, in order to "crowdsource" audit work, and partially as an 'insurance fund'.
Use a 90 or 180 day delayed payout mechanism to give some funds as reward to miners solving a block, in order to discourage small miners from witholding, since they will actually immediately lose $$$ in doing so. And to distribute the rest of the bounty fund (excluding a reserve of at least 100BTC) as payouts similar in concept to "claimed insurance" to reduce miners' losses due to block witholding.
If any software developer designs an effective scheme of lower cost to operate that provides reliable automatic detection which is not easily defeated or provides permanent immunity against block witholding, then the developer would be awarded 10 or 20 BTC, from every pool to have such a fund, and the size of the security bounty / block "insurance" premium could then be reduced.
On the other hand... if anyone who reviews a pool's public datasets and is convinced that a certain miner is conducting block witholding, they can pay a 3 BTC fee and specify which 2016 block difficulty adjustment period, or 6 BTC and specify their two sequential 2016 block periods, etc, in order to lay their accusation.
In case the pool operator finds the proof of the accusation to meet the statistical requirements, then the first to have reported the miner block witholding for each 2016 block period is paid from the bounty fund the lesser of 20BTC from the bounty fund per 2016 period and half the pool's loss from that miner (Not to exceed 40BTC total to all accusers for accusations related to a specific accused miner or during a specific 30 days).
In either case, the pool operator keeps the 3BTC fee taken from the first accuser to lay the accusation, in order to help compensate for investigation, but may: at their discretion, refund some portion, if it was shown to be wrong but non-frivolous.