In the debug zip file from the linked discussion I saw this, which has more details on the 400 reason:
HTTP REQUEST
Request{method=PUT, url=https://wim.nl.tab.digital/remote.php/dav/calendars/rokejulianlockhart/3de72895-d345-4ac4-8eec-1418e857ba7e/95e32c5d-ef67-4611-9c7d-920386eea6de.ics, headers=[If-None-Match:*, User-Agent:DAVx5/4.5.3-ose (dav4jvm; okhttp/5.1.0) Android/15, Accept-Language:en-GB, en;q=0.7, *;q=0.5, Accept-Encoding:br,gzip, Authorization:██]}
[...snip]
HTTP RESPONSE
Response{protocol=h2, code=400, message=, url=https://wim.nl.tab.digital/remote.php/dav/calendars/rokejulianlockhart/3de72895-d345-4ac4-8eec-1418e857ba7e/95e32c5d-ef67-4611-9c7d-920386eea6de.ics}
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\BadRequest</s:exception>
<s:message>Calendar object with uid already exists in this calendar collection.</s:message>
</d:error>