The official stance on adding the HTML 'size' attribute to CCK text fields seems to be, "Standard Drupal behavior is to make fields 60 characters long and 95% wide. If you need to change a field length, do it in CSS or with hook_form_alter()."
Our clients don't necessarily know CSS or Drupal module development, and it seems like a no-brainer that you should be able to specify the size of a field in the field settings form. Heck, I know CSS and module development, and I'd much rather be able to just change a form value than muck with code.
I cloned text.module and rolled in the patch provided at http://drupal.org/node/88801 with a few tweaks, and that will work well for the project I'm building. I'd be happy to add it to contrib, although it feels icky to be including so much duplicate code to add such a basic attribute. I started out trying to add the field to the stock text module, but couldn't see a way to do it without doing all kinds of gymnastics that I don't have time for.

Comments
You can specify a maxlength
You can specify a maxlength for CCK text fields, which does make sense. Does CCK not shrink the size of a field if maxlength is small?
It doesn't - it puts the
It doesn't - it puts the HTML maxlength attribute in the input tag correctly, but the field size remains at 60 characters/95%.
Then I think the best
Then I think the best solution would be a simpler patch against CCK which sets the width to maxlength or 60, whichever is smaller. Then users don't have to configure it themselves, and you don't have to worry about size being too small or too wide for the number of characters.
Sorry to go off topic, but
Sorry to go off topic, but you imply in your original post that you allow and instruct clients in the usage of CCK. Is that a common thing for you? Maybe you're working with a different class of clients, but access to CCK's back end has always been among the things I don't grant permission for for clients' accounts, nor train or encourage them to use.
The Boise Drupal Guy!
Warning Will Robinson!
it's not uncommon that, when testing a form I just did (in HTML or "plain" PHP) that I accidentally set the field length to the same as the Maxlength, and it gets cut off (i.e., that many actual characters don't really fit). Happens with certain combinations of browsers, CSS, fonts, and characters input. If I want to be sure it fits, I usually use length = maxlength x 150% + 1; that seems to work pretty reliably.
width: auto
I have found that if you set the width of your input elements to 'auto' in your own style sheet, then your browser respects the size attribute that you entered through the Drupal interface.