We have a nightly build that currently cleans the entire workspace and builds all projects from the ground up and then runs integration tests on them. But this process takes quite a while - around 10 hours.
Using an incremental build could save at least half an hour, but would that be a good practice for a nightly build that just runs tests and the output of the nightly is not used anywhere?
No, it is not a good practice. The best practice is to trigger a Nightly build with the packaged solution from a Release build.