Just to reclarify on a public topic for others, the kernel panic is expected behavior in this case. With
dt-overlay=gpio-poweroff the pi’s kernel expects to have its power cutoff (it is after all sending a poweroff in order to indicate shutdown is complete and power can be turned off), but if you don’t have a case with a button or have a case with a button, but that button is still on, then power isn’t cut off, and the kernel panic is thrown after 3 seconds as a warning message. As far as I can tell from what I’ve read, this is not an “actual” kernel panic, in the sense that the kernel critically failed, and your system is at risk, it’s intentionally triggered as a warning of unintended behavior.
I’ll probably add something to the README but if you’re using a safe shutdown script, you should only shutdown your system by using the poweroff button (at least when your case comes with an on/off switch instead of a push switch, push switch cases could definitely be turned off with normal shutdown options).