да, значит 2е.
вообще я не очень понимаю, зачем вам отдельный валидатор OptionalField.
большинство констрейнтов и так пропускают нулл, как валидное значение (чтобы оно стало невалидным, надо явно добавить еще и констрейнт
@NotNull).
так что в вашем случае достаточно не указывать
@NotNull и все (возможно еще заменить
@Length на @Size, не уверен, пропускает ли нуллы
@Length).
это чтобы не было ошибки, если в поле нулл, но чтобы если оно не нулл, оно валидировалось уже остальными констрейнтами.
а чтобы обязательно одно из них было не-нулл, тут уже нужен новый кастомный констрейнт, навешанный на весь класс с кастомным валидатором, который проверит, что одно из нужных полей обязательно не нулл.