When creating a bind variable for a view object in ADF, there are two properties can be configured - Updatable and Required.
The updatable flag should be enabled pretty much all the time as it allows you to change the bind variable value to run the query again. For the Required flag, it should be disabled unless you specifically need it - seems worthless to say ...
When the required is enabled, the bind variable will be defined as "Kind=where" - this can be examined in the view object xml file. This is pretty straightforward. "Kind=where" means this bind variable will always be added into the where clause when this VO is queried. Therefore it's always "required".
When the required is disabled, the bind variable will be defined as "Kind=viewcriteria". This means this bind variable is optional and can be added by applying the corresponding view criteria. Therefore it's not required.
In most cases, the bind variable should be optional. Unless this VO instance is meant to be queried with the specific where clause all the time.