Да, в таблицу product_sizes всегда вносится запись вне зависимости от того уникальное у него имя или нет. Насколько я понял, firstOrCreate должен смотреть в базу, если запись уже есть - создавать зависимость с ее id, если нет, внести новую запись и создать с ней зависимость, но что то идет не так)