I've never really thought that much about the risk of prosecution, as all of my trips in London were on Oyster with a Travelcard - so if I didn't scan in or out, it wasn't a big deal (hence a shed load of incomplete journeys on my history).
But since going to PAYG, I am certainly now conscious of all those times I had problems getting through - and the person behind effectively let me out (and of course, the many times it happened with me letting the person in front out). At peak times, it happened quite a lot and it's not always easy to stop and go back - and how many people want to go and queue at the ticket window to seek assistance (I doubt staff at the gateline can do much)?
I've never quite understood why sometimes a reader will fail to communicate and give the 'seek assistance' when there's nothing wrong with the Oyster card and any credit/travelcards loadsed on. Clearly it fails to send/receive data without some form of error, but could a flag not be marked on the Oyster to show that an attempt to scan was made? If that was done first, including the time/location, then any subsequent failure to complete the interaction wouldn't be so harmful for someone later caught.
Clearly it will still mess up the billing and possibly mean an incomplete journey/maximum cash fare, but it would help disprove intent as surely everyone knows about the problem with people going through gates in a crowd. I also doubt anyone would be able to trigger such an error on an easily repeatable basis to use this as a way of avoiding prosecution.
There's no reason for TfL to do this. They have nothing to gain in helping a traveller avoid a penalty fare.