In the case of replacing a DLL with a newer version an Optional parameter's default value is not part of the DLL's code but part of the associated MetaData.
When an application that uses this DLL is compiled and doesn't provide a value for the optional parameter then the default value is not dynamically used by the DLL function but coded into the calling application, hence if the value changes in a newer release of the DLL the application will carry on using the original default value - the only way around this is to also recompile all clients of the DLL so they now have the new default value compiled into them.
Also one overload can call another version of the function - this prevents too much code duplication and will probably be inlined away by the JIT compiler at runtime.
e.g.
Public Function FreeFallDistance(T As Single, Accel As Single) As Single
'Do something here
End Function
Public Function FreeFallDistance(T As Single) As Single
FreeFallDistance(T, 9.98)
End Function