Why does a bipolar transistor not work, but a MOSFET does
I'm not convinced that this is the most elegant circuit / method to achieve what you want (switching on/off your Arduino). More on that below.

But anyway, my guess is that the main difference between the circuits is that the NPN transistor needs a (small) base current in order to conduct. That base current can only flow when C1 (22 nF) is being charged. As C1 has a very small value, charging it takes only an instant, then there's no more base current, Q1 switches off, the Arduino stops as it has no supply voltage.

The MOSFET doesn't need a current, it just needs a voltage. The gate of a MOSFET is isolated so no current can flow. The only way that C1 can charge is through the leakage current of D1. Wow, that's scary, relying on a diode's leakage current! No experienced circuit designer would do that willingly.

All-in-all your circuit creeps me out, I would never do this like that. What would I do then? First of all, letting some circuit switch on/off its own power supply is always a bit scary and actually not needed. I have made a project where an Arduino runs on 2 AA batteries in series and is continuously connected to the battery. Those AA batteries last for more than a year.

For this I removed the voltage-regulator chip on the Arduino board (leaving it in place and using the 3.3 V supply pin might also work) then I programmed the Arduino such that it goes into sleep mode most of the time. In sleep mode it consumes very little power.

I suggest that you find similar battery powered Arduino projects and see how they do that, then just do the same.