Another option would be a low priority status. Have an option not just on the mobile app but also in Zwift to report irregularities. When a report is filed, a person is placed in a low priority status which prevents them from claiming jerseys, participating in events for a duration, or using group message. It could be a week for the first offense, a month for the second, and a permanent for the third. This option would allow someone to still use free ride and workout mode but cannot take part in the competitive parts like events, races, and jersey points.
How can Zwift handle reports? Make it community based. Offer regulars that qualify (Level 25, X events/races completed, etc.) a special status. These reviewers could look over a report and make a judgement call over someone either falsifying weight, intentional wheel slip, vulgar group messages, etc. Lay out some criteria the reviewers should follow so everyone is on the same page. If multiple reviewers say that the report was justified, a punishment is issued. The person being reported and the reviewers are kept anonymous. Also, for the report to be reviewed, multiple reports have to be issued on the same person for it to be flagged. An incentive could be cosmetic items or experience after the level cap is raised. The incentive is only issued if all reviewers agree. This prevents the report system from being abused by riders but also prevents the reviewers from just checking “yes” to get cosmetics. Obviously, this would need a little more tweaking and would take time to implement, but it would really cut down on the number of cheaters and toxic people by knowing that punishment may be just a report away.