How would I model a product to have multiple image URLs and have only one as the default?
Yes, your idea can work. Add an is_primary boolean column to images:

ALTER TABLE images
ADD is_primary boolean NOT NULL;


and enforce the "No more than one primary picture per product" rule with a partial index:

CREATE UNIQUE INDEX images_primary_image_constraint
ON images (product_id)
WHERE is_primary;


The above index will ensure uniqueness of product_id among rows where is_primary is set. If you try to specify a second primary image for some product, the uniqueness will immediately be violated and the operation will fail.