It has a simple UI to guide the user into finding and setting the most common options. That UI must be as simple as possible for new users and can be changed regularly, according to the changing needs of the majority of users.
It also has an advanced, generic but type-safe UI (about:config) for finding and setting any possible option present in the software.
Configuration files are the traditional way to achieve this second level, but they don't always help the user in finding the options and are generally not type-safe.