When releasing a new version of a program is it better to include the full changelog since the beginning of the project or just the part since the last release?
Neither.
Only provide the relevant, bigger changes that an end user is going to care about.
No one cares about the fact that you refactored class Foo
so that it can be re-used a bit more easily in certain circumstances.
What they care about are the things they can see or think they can see. Did you change the UI? Or some of the workflow? Or put in performance updates?
Don't bore the end user with minutia. Provide only the relevant details within the release notes. If they really want to find all the minutia, advertise it through your CVS / bug-tracking system.