Like all PUT and POST requests other than the media ones (and /logout...), /join, /leave and likely others are supposed to take a JSON body, e.g. {} if nothing special is required. Currently Synapse as at v1.92.3 does not require this.
Unlike for /forget (#16366), I haven't added warnings for these as it's clear the issue is more widespread and I don't have time to descend into an endless rabbit hole here.
We should see if any clients are hitting this and then a future version should cut this off completely (or maybe we end up giving up and specifying that these can have no bodies...)