$products is not a single array of values here. I think you need to pass this to your component
<product-list :products={{ $products->toArray()['data'] }}></product-list>
$products->toArray()['data'] should give you only the items of the pagination object.
However your solution is not correct here. Why would you return a pagination object to a vue component. You either just give the correct array of products and fetch the next/previous page using ajax request or you pass all products at once and do the pagination inside the component.