You're using /opt/kiosk.sh as your session file for startx. Because that script has an infinite loop coded into it, your script is going to reopen the browser every time it's killed.
Instead of using while true it may be better to perform a check to see whether that service is shutting down. Unfortunately, I'm not familiar enough with systemdupstart to know what command linetest condition would determine when the system is shutting down. The Something like this new while loop would probably be something like thismight suffice (this replaces the one in the kiosk.sh script):
while [[ $(status kiosk) != */stopping* ]]
That loop waits for the status kiosk command to return a string containing "/stopping" and terminates the loop when it does.
I hope someone with more experience in systemdupstart can correct my implementation. :)