Since it is your own validation that it cannot pass without = null you can add a custom [OptionalParameter] attribute and check for it existence e.g., though you need to do some caching by type to avoid excessive use of Reflection.

Second option is to have some Base class for all of your optional parameters like below and just check with is operator.

public abstract class OptionalParameter
{
}

Third option is to do the same with an interface.

Though the attribute is the cleanest in my opinion it's a bit harder to implement.