There is a large downside to duplication: Once you have the Product functor, you want to be able to talk about its unit. Such multi-parameter typeclasses and type families often talk about 'the' product instance or 'the' initial or terminal object for a given category. I have plenty of these classes lying around in packages on and off hackage.
Once you for all intents and purposes duplicate the type, in base no less, the community painfully splits into two incompatible subsets.
We already have a fair bit of that going on with Const vs Constant, though, at least there the bias is almost overwhelmingly in the Const direction, but that sure isn't a pattern I'm eager to repeat.
-Edward