Sequelizeのv5で他の誰かが問題を抱えている場合 、「through」モデルで主キーを指定するだけでは不十分です。
throughモデルで一意のプロパティを明示的に設定する必要があります。
User.belongsToMany(Product, { through: { model: UserProducts, unique: false } });
Product.belongsToMany(User, { through: { model: UserProducts, unique: false } });