A user, across different Drupal installs, is generally the same concept. To be more basic, every user has an email address, username, and password. Let's say I write a module that works with users and manipulates these fields in some way. I can, in the majority of cases, assume this will be standard across different Drupal websites and safely distribute this module. If I wanted to provide the module the ability to manipulate other optional fields that might be added to a profile, such as first name, last name, favorite bubble-gum, etc., how could I do this? One thing that comes to mind is an optional text box (on the system settings side) that takes multi-line input, each line dictating what new field to manipulate. Is this the best way to accomplish this?
For example, let's say you add the profile fields "Hobby, Telephone #, favorite food." I write a module that populates a block with a varying number of profile fields. The number of fields depends on how many chosen in the configuration of the module; I could choose to provide a block to edit a user's "Hobby" and "Favorite Food" by entering those two lines in a text box separated by a new line. This could be done with a multivalue select box, as well, but if I want to attach other information to each field, I think the textbox allows for greater flexibility.
This could be applied for any other module, as well. Let me know if I need to abstract the question further, please.