Я подозреваю, что они предоставляются только для совместимости с функциями .NET. Это не то, с чем вы сталкиваетесь на функциональных языках. Проблема с необязательным параметром в том, что вы не можете его карри. Если второй параметр функции f является необязательным, то что такое
пусть g = f x
Это функция, принимающая один аргумент, или значение, полученное путем вычисления f по x плюс второй параметр по умолчанию?