You should be good, and I don't see any violation there of the Passenger Services Act (commonly erroneously referred to as the Jones Act which is about cargo). Princess does give full points for the coastal repositioning cruises, and Elite on Princess is well worth the effort and higher per diems of these cruises.
I have clients doing the 1-nighter for just that reason.
The key with the PSA is you cannot be transported between two US ports by a foreign-flagged vessel without a stop at a distant foreign port. And that means on the same vessel. So the first two legs are legal by dint of him sailing two different ships. The second and third legs should be fine, but I'd book them as completely separate bookings, not listed as back-to-back, but alert Princess at time of booking to ensure he doesn't get surprised when he boards in Seattle. Usually Holland America will nix that kind of B2B booking, since it's technically Seatlle to SFO, but in the past Princess has let them through. He may be asked to disembark between them. Do know that technically YVR is not considered a "distant foreign port" in most interpretations, but usually isn't enforced by the cruise lines, though they're under a bit more scrutiny right now.
::: Edited to add ::: By the way, Princess is even offering transfers from YVR port to Seattle pier for locals who drive to the ship. He might want to check the timing of it as it would probably be the easiest option for him between the ships.