At it's core a contribution is something giving money to something. If you want to know "Who gave money to Mitch McConnell?" you sometimes want to know who contributed regardless of whether they are a person or PAC. You could store the data either in one common format and link to generic entities or you could separate the individual records into two tables and have proper foreign key relationships to PAC and individual tables.
From a data retrieval perspective, (I presume) it is less expensive to filter out unneeded records when asking for only PAC contributions than it is to combine records from two distinct searches if the PAC and individual contributions are stored separately.
There is also an advantage to denormalized data when dealing with large data sets. Joins are big performance killers so the fewer you have to do, the better. Also Hadoop is optimized for denormalized flat files so storing the data in the same way will make processing much easier.
I believe that there is another advantage in flexibility. If a candidate donates money to another candidate, not through a PAC, but directly. Then in a normalized database that person would have two records: candidate and individual. Using a generic entity, not only can you use the same entity reference in both situations, but merging these multi-type entities from different datasets will just be a matter of merging one entity with the other.