At the time, certain left-wing groups (though their influence wasn't revealed until later) made it look like there was a groundswell of demand for campaign finance reform. Bush promised that if Congress put a bill in front of him, he would sign it. He recognized that it was unconstitutional, but signed it because he had said he would, assuming the USSC would throw it out. You all know where it went from there. (Scalia's dissent was especially . . readable!)
Excuses, excuses..If he knew it was unconstitutional, or even disagreed with it, he should have done what he was required to do, no matter the consequences. But Bush supporters will do anything to replace the blame won't they?