I think it depends on several factors, some of which I don't think the AI could compute. If someone attacks me, takes a few of my planets, blows up a few of my ships, then I build a military that makes his eyes bug out (happens a lot, I always have a very strong economy and industrial base), then I think war reparations are perfectly reasonable and I shouldn't take a hit for expecting them. However, I do think that there should be a "minimum duration" on peace agreements, from both sides.
What GC has isn't a peace agreement, it's a cease fire. Because there's not a peace agreement, it gets abused. In fact, it gets far worse when you're fighting an alliance, because you can let them buy peace knowing that THEY are going to declare war again soon, so even a penalty for declaring war wouldn't eliminate this. On the other hand, having a penalty for getting something out of a cease fire might make it harder to buy your way out of a war you don't want to be in. So I think that if there is a penalty like this, it should only apply if the player that is receiving goods other than the cease fire if that player is the one that added those items.
I still think the better way is to impose a minimum duration for the peace agreement/cease fire. I'm not sure I want it a negotiable length, as that could lead to a few different types of exploitation.