I really think this is necessary.
-I'd cut down on redundant subs
For example, the 2 methods to get part of a string (I forget the name) could be combined into 1 which takes 2 parameters, and the second defaults to -1 (an invalid number) so it acts like the single parameter version instead. Using an invalid input as the default to detect when they aren't entered is very convenient
-I have some functions that take like 20 parameters, and most of the time I call it I have to use the default values.
-It also lets you change the default value without changing every time the sub is called
-It lets you add parameters later in the program without having to track down everytime it was called.