Where does the partition information in /proc/dumchar_info come from, on MTK devices? If I want to resize partitions or restore a backup later, how do I make sure that /proc/dumchar_info reflects the changes?

As far as I can tell, dumchar_info is not related to the MBR and EBRs, since it has more info.
/proc/dumchar_info is provided by the dumchar driver, which reads the partitioning info from a header file generated during the build process and compiled in when the kernel is built. This header file is also used by other components, like the preloader, possibly bootloader, and both regular and recovery kernels. This means unless you can rebuild said components with a new header file, the partitioning is quite literally hard-coded.

A scatter file is related, in that it's generated from the same source. You can use the information from /proc/dumchar_info (together with some assumptions) to generate a scatter file.

For more information on partitioning on MediaTek devices that don't use GPT, see here.