I can't think of any specific core functionality that will automate this out of the box. You could do a P/O Return to return the unused parts, but that does not handle physical shipping, it just reverses a P/O receipt. If you want to handle the shipping (and possible freight costs) then a Sales Order is probably the best approach.
My suggestion is to use a Project to link the P/O and S/O together. If you are using manufacturing to consume the customer parts, then you can link the W/O to the project as well. In this way you have a single point where you understand where the customer parts are being utilised. If you use Lot control that will also tie in the customer parts to an inventory lot. It would be possible to then script something that says when I ship the customer PCB boards, check any outstanding lots of customer parts and automatically add to the Sales Order.