Can the microcontroller program flash memory be used for storing user configuration?
Yes, you can.  I have done this many times.

However, there are some drawbacks relative to using separate EEPROM:

The number of lifetime writes to program flash memory is significantly less than data EEPROM.

The processor will go out to lunch during the erase and write times.

Program flash is erased in blocks.  You can't just update a single byte.  I usually use a block caching scheme to deal with this.