xargs is "better" in that it spawns 1 new process for however many things are found. -exec spawns 1 new process for EVERY thing found.
So:
find . -name '*.log' -exec rm {} \;
find . -name '*.log' -print0 | xargs -0 rm
xargs also has options to limit command line length or # of items if you want to limit that. find -exec is about the same then as find ... | xargs -n1