Config custom record affords control, visibility, flexibility, and power that you don't get with script params. Certain List/Record refs are not available; multiselect cannot be used; references to saved searches must be public; you have no control over how the field is display; there is no means of validating script param field input in the script deployment form; and on and on. Script params are basically the late runtime binding of NetSuite scripting--and they come with a similar set of advantages and perils.
With config recs you can have custom forms and arrange the material in way that is intelligble and usable. Try looking at script or company parameters after you add more than a few: it's a mess. With config recs, you can use record- and field-level permissions and designate certain config params for some roles to maintain, others for Admin only, etc.
Config recs can support lots of different functionality that may be important, depending on the env. For example, one could add metadata and UE logic for config-set start and end datetime for the purpose of coordinating configuration with deployment (one record is the "active" singleton, which maybe expires on a certain date coinciding with a important release, at which point a new config set with a new start date "takes over."
System Notes on a config rec would be much easier to follow and more transparent than, say, putting something in place to track the company preferences (not to mention the fact that you can use permissions to expose certain config fields and not others -- this would not be possible with company-level script params).
One advantage of params would appear to be built-in caching (not sure! it seems so and would make sense). With a custom config record, you would need to implement caching using N/cache achieve the performance of in-memory/in-session config data.