So I submitted this as bug on GitHub. Partial update of component field results in invalid data · Issue #14743 · strapi/strapi · GitHub
Turns out, partial update works, but the client needs to pass the id of the component just as when updating the multi-component fields. Eg.
{
data: {
address: {
id: 1,
street "10 Ave",
}
}
}
Note however, that it’s still possible for clients to create invalid data in your DB. See the issue for discussion about how/if this will be fixed.