While base64 encoded images are certainly more reliable, you don't have to supply a base64 encoded image necessarily through the Product API. For example, here's a REST call that would both create a product with an image and attach a new metafield to it at the same time (note the current image link doesn't work, you'd need to replace it) :
So I'm doing something similar to that in my product create flow, I create the product with GQL, then upload the image through REST cause I have the base 64 and not a URL. (I asked about this in this thread for context).
But in this case, I don't want to upload a product image, I want an image in the metafields, which I use elsewhere on the page. So I can't upload the image as a product image, and then use that URL.