It is a question of good design. For many columns (usernames, zip codes, phone numbers etc) you know the length. With VARCHAR2(10) you know the maximum length for the column is 10, with VARCHAR2(1000) there is a very good chance you get values with length more than 10.
I thinks besides the question of good design, the length of any field is also a part of business rules. For example, it may be a rule that name will be maximum 30 characters or address line be 3 lines of 70 characters each etc.
When the rule is not compilied with, the insert in row should fail. Without this discpilne, it is quite possible that anything goes inside database.