Error clearing a field via migration script
I figured it out. I'm not sure understand the why of it. But here is the how:

$product-&gt;setFieldValue('components', []);
Craft::$app-&gt;elements-&gt;saveElement($product);


I guess setFieldValue() does some other stuff in it that the magic methods do not.

The more you know! :)