grub-pc's postinst decides whether to ask this question. In my case, I've tracked it down to the following condition:
elif test -z "$2" || test -e /boot/grub/core.img || \
test -e /boot/grub/i386-pc/core.img || \
test "$UPGRADE_FROM_GRUB_LEGACY" || test "$wubi_device"; then
So if /boot/grub/i386-pc/core.img exists, it will always show the prompt. If it doesn't, it'll (practically) never show it.
/boot/grub/i386-pc/core.img should exist under normal circumstances, so chances are, something went wrong in the past to cause this issue. To resolve the situation, run the following command:
upgrade-from-grub-legacy
This should create the required core.img and reset the installed devices debconf configuration, and afterwards dpkg-reconfigure grub-pc should work as expected.
You might be getting the following error, which is caused by a bug:
dpkg-maintscript-helper: error: environment variable DPKG_MAINTSCRIPT_NAME is required
In this case, the following command should work:
DPKG_MAINTSCRIPT_NAME=postinst DPKG_MAINTSCRIPT_PACKAGE=grub-pc upgrade-from-grub-legacy