Public Cadeca rates (outside of the airport) witnessed in 2011 were 1CUC=0.87USD, 1cuc=1.19Euro .....considering 1USD is worth less than .75Euro, it seems to me that the extra penalty against USD is a bit of a myth. I also found it interesteing that no matter where you come from or are going to, they only wanted to trade CUC for USD at the airport.
My advise (unless you're talking huge amounts, in which case you should check CURRENT rates and do decent math) is bring whatever cash is convenient to you and then avoid changing ANY more at the airport (coming or going) than absolutely required. There are Cadecas all over (you may have to stand in line, but it's not a big deal).
Also, if you're not Latino, or else being wisked directly to Veradero to hangout with all the other Canadians at the beach
(or perhaps Vinales, to chill in the countryside), you will probably be solicited CONSTANTLY, by jiniteros ("friendly" folks who want to bring you someplace & either trick you into spending money, sell you somethin, or get a commission for getting you into anyplace), and (what seems like) half the people with a car shouting "TAXI!" at you.