The "configure word" are usually called "fuses". Because in the good old days, theses were actual fuses that got burnt once externally programmed. And this was not a reversible process.
In the actual MCUs, the fuses are usually not made of actual fuse but their meaning remains the same. They are usually used to configure thing such as:
- Kind of oscillator to use on boot
- Which memory to boot from (internal or external)
- Code protection
- Is the debugger allowed?
This is the kind of thing that may have to be configured before running the first line of code.
Imagine a MCU without any internal oscillator. You therefore have to configure the external oscillator driver correctly or the oscillator will not start and you are stuck. This can't be done done by software because you don't have an oscillator yet... Fuses are used.
Now imagine that you can change the fuse from your software. What happens if you do a mistake in your code? If there is a fault at run time and you modify your startup oscillator configuration? Your device is broken.
Well, modern MCUs usually have an internal oscillator and the oscillator configuration is not in the fuses anymore. You can run your code using the default startup internal oscillator and then setup the rest in your code. Things have evolved. That was just an example of the usefulness of having something that can't be changed at run time.
Another reason: Security and IP protection.
Imagine that it's possible to change the read protection or the debugger-enable bit: One could quite easily force your MCU to enable those bit and steal your binary containing your IP.
Once you burn the read protection fuse, you want to be sure there is no way to go back and read back the content of the chip.
In conclusion, it's usually not possible to reprogram the configuration bits at run time. Otherwise they would have been regular configuration registers.