I'm not really an expert in either one, however I sense that Faust might be slightly quicker to use in some cases but you do have to get used to it as it's less than intuitive.
With pd you hook stuff together visually, whereas Faust is able to render a block diagram for verification but if you make a mistake in your code, the error messages are spectacularly bizarre.
Biggest difference I see so far is that Faust leverages a lot of the classes from the Synth Toolkit STK++ and so, if you want a 10th order elliptical lowpass filter you can just slap one in there. pd has 3 filters - lowpass, bandpass, and highpass. I'm assuming these are second order blocks but it doesn't say. For some of the things I'm trying to do this is pretty important.
So you also gain access to a lot of the STK/CCRMA filter types and physical models for different types of plucked strings and percussion sounds, etc.
Another thing that Faust allows that I don't know whether it can be done in pd is the "seq" operator where I can say "I want 20 all pass sections in a row that are a) all the same or b) different by some calculated parameter based on the index". Then if you change your mind and decide you only need 15 of these, you just change "20" to "15" and recompile.
You can also export Faust to pd - that was one of the class assignments, but I recall some aspect of the patch didn't translate so that might not be a perfect process.
Another thing I don't know about because I haven't done any of that with either one are the "interactive" or "sequence" (like a list of notes to play) type functions.