Can PICPgm program a new part?
Looks like this particular case was an XY problem.  I never found how to add my device to PICPgm's supported list, but a slightly different permutation of the Google search terms got me a thread that I hadn't seen yet on Microchip's forum, where someone mentioned a different programmer that I hadn't seen before either.
&quot;Pickle&quot; appears to come primarily as source code, although there is a token precompiled image available for the Pi.  I built it from source, so if I really need to, I can make it do anything at all.  That won't be necessary right away, as it already recognizes the device that I'm using at the moment.
And it does indeed program the part in LVP mode (given an explicit command-line switch - otherwise it tries to use HVP, which isn't available for this project), and verify correctly, using 3 GPIO signals at 3.3V: !MCLR, PGC, PGD.  Verifying before programming fails as expected, and succeeds after programming, so it did indeed change something.  And it releases !MCLR by default so that the chip can start running with the wires still hooked up, which then does what it's programmed to do.
The argument structure seems a bit odd to me, but once it's in a script that my IDE can call, that doesn't matter.
(!MCLR is called VPP in the config file, and what it calls PGM is not used: set that one to -1, and the others to the GPIO numbers (not pin numbers) that you want to use)