I say that simply "free" is more correct, but not absolutely correct. I
liked the analysis that said that "for free" translates into "for for
free." However, here is a problem with that type of analysis:
Another dictionary definition says "free" means "without charge."
American Heritage® Dictionary of the English Language, Fourth Edition.
Analyzing the usage of free is not as simple as plugging in the
dictionary defintion, because if we did so, then we could not say "free
of charge," since this would become "free of charge without
charge." This is nonsense, of course, so we have to abandon this
analysis.
I prefer to think of "free" as "without constraint." We can talk
about being free of social constraints, free of physical constraints,
etc. Commonly we talk about things being free from the monetary
constraints, and so technically we should say "free of charge," instead
of either of our original choices ("free" vs. "for free").
Therefore, "free" was the closest to begin with, because it is simply
the truncated version of "free of charge," which is the correct
phrasing.
Tim