It could be a race condition where the PAR temp dir is deleted before your code has finished its cleanup or some other step in global destruction (which has no guarantee of order if I remember correctly), but it is difficult to have any certainty without seeing your code. You could put some feedback statements into an end block in your code to get a better sense of when the error is triggered.
Maybe upgrading to the latest PAR::Packer will also help, but I don't see anything obvious in the change logs.
In any case, I packed using the command below, and it generates and removes the temp dir as expected.
pp -C -M Net::OpenSSH::ShellQuoter::POSIX -M arybase -o mytest.exe -e
+"print join q{ }, @INC"
|