size attribute is mainly presentational, and I avoid it unless it's really important to set a width for non-CSS browsers like Lynx. The exception is for
select elements, where it's needed to create a list box instead of a drop-down list.
The widths of text fields etc should be specified with the
width property in CSS. It has the advantage of letting you specify the width in em, as well.
textarea elements the
cols attributes are required, but I still think the dimensions should be overridden with CSS.