Means testing is an expensive process, and prone to error. The cost of adjusting someone's benefits every time their income changes is significant, especially if they have income from more than one source and/or aren't on PAYE. And it's challenging for the self-employed, whose income can fluctuate significantly. It takes time to process the adjustments, so self-employed people often find that by the time their benefits are reduced because they've had a good month, they're in a bad month and utterly skint.
Errors, either by DWP or the claimant, lead to over and underpayments, both of which can cause significant hardship.
UC has improved things somewhat for employees, thanks to RTI reporting, but they're still constantly playing catch-up. If someone on a ZHC has a month when they don't get many hours, it can be almost another month before this is reflected in their UC.
It's ok for those who are organised, numerate and have good literacy, but that's far from everyone. Even my highly intelligent and organised niece, currently on mat leave and with a partner who was self-employed, struggled to manage reporting his earnings and work out how much UC they would get each month (they're in a high rent area, so get help with housing costs). He is now employed, and earning less as a result, simply because it was such a nightmare to manage their finances.