You can implement a form of “shutdown after inactivity” on the server side using the approach mentioned in this post User automatic logout on inactivity - #4 by kevin-bates. We use this for mybinder.org. However this is a config in the jupyter notebook server, not the JupyterHub server.
The config snippet for mybinder.org is here.
The idea is that a kernel can detect that it is “inactive” and shut itself down. This works even if a JupyterLab frontend is connected to the kernel. Once the kernel has shutdown the network traffic stops which allows JupyterHubs culler to detect that there is no more activity and then culls the user/session.