And how do they distribute the free tickets? By charging, and by charging a significant amount, they can be sure that only people who really want to be there will be there, and they can be pretty certain that the people coming are developers who will directly benefit from the talks and labs.
That said, I do think they should have separate press tickets for the keynote, perhaps priced a little higher, but with priority entry or something. As a developer I'd like to see fewer tickets taken by the press, but really care about being in the main hall for the keynote.