Difference between menuconfig and kernel_menuconfig

Recently, I wanted to add i2c I/O expander to my build.

In menuconfig, there's --- CONFIG_PACKAGE_kmod-gpio-pca953x
In kernel_menuconfig, there's --- CONFIG_GPIO_PCA953X

Here I faced an issue. Which one should be selected ?
If it works with just kmod package then why is there a config in kernel_menuconfig?
Does menuconfig overwrite kernel_menuconfig?

kernel_menuconfig gives you access to the full kconfig of the kernel, kind of bypassing the normal OpenWrt kconfig (meaning only y and n make sense there, while m gets built, it won't end up anywhere). If you don't need your module to be included statically into vmlinuz (as in necessary for booting), it's usually better to use the normal OpenWrt kconfig, instead of kernel_menuconfig, that way the normal packaging gets created with its dependency information.