Variants - What's the deal?

I am about to encounter variants in one of my implementations. So here’s a question, maybe to the Frappe team.

What was the thought behind creating the Variants feature?

What are the advantages of using Variants as against say, treating each variant as a full blown item? What are the downsides?