(хотя, казалось бы, некоторые вещи не так).

е, что компилятор автоматически преобразует тип в необязательный тип, когда это необходимо, хотя здесь нет отношения наследования.

Где в документации указано это поведение?

func test(value: String?) {
    // String passed in is now an optional String instead.
    print(value ?? "")
}

// Pass an actual string
test(value: "test")