The documentation says that: "By default, threads run in supervisor mode and allow access to privileged CPU instructions, the entire memory address space, and peripherals. User mode threads have a reduced set of privileges."
Also, these two modes are related to macros K_KERNEL_STACK and K_THREAD_STACK. In my CoAP(with Open-Thread) example that is provided from NRf-SDK, K_THREAD_STACK_SIZEOF is used. I think, this example choose user-mode threads.
What is the reason? Can I choose supervisior mode? Documentation says that it is more efficient with using memory and has privileged access to memory space.