I did some digging and have a fix for it. @jules I could do a pull request, but not sure the way I did it would follow your preferred style (and I also changed a pointer in a non thread-safe manner, which might be ok in this situation, but not ideal).
More specifically,
in juce_mac_NSViewComponentPeer.mm –line 1938 in latest– doesn’t set the Desktop “kioskModeComponent” to nullptr, so when on resize the code checks if isKioskMode() to not constraint the size, it returns true because the desktop thinks it is still in kiosk mode.
Simply calling Desktop::getInstance().setKioskModeComponent(nullptr) doesn’t work because it actually calls into the OS to set full screen, which it basically causes the screen to go back to full screen.
I added a method called: didExitKioskMode() where I simply set kioskModeComponent to nullptr, and call it from windowDidExitFullScreen. That works! Again, a bit simplistic as there might be other state to take care of, but seemed to work just fine.