joi OR ИЛИ Строка или пользовательский тип

Используйте joi.alternatives().try()

Например:

joi.alternatives().try(
  joi.string().allow(null, ''), // или строка (пустая или нал допустима)
  joi.object({ // или объект с двумя полями
	start: joi.string().allow(null, ''),
	end: joi.string().allow(null, ''),
  }),
),

Продробнее:

Key Words for FKN + antitotal forum (CS VSU):