I see where you're coming from. I think where we differ is on our views of the whole process.
Advertising it as "free + shipping" only gets the customer's attention. At the end of the day, the customer still sees the total amount they're paying (ie. $12) before they finish checking out. Therefore they're receiving the complete, honest picture of the total cost before they pay.
There are no ethics that determine how much a company should or shouldn't charge for either the product cost or shipping, so everyone is free to categorize their costs however they want.
As long as no one is being scammed or being forced to pay for more than they agree to at checkout, I believe it's fair game.