SQL Server not using nonclustered index
It looks like SQL Server is not using that index by default because:

it's a filtered index, and
your query is parameterized

You can see this warning in the execution plan XML:
&lt;UnmatchedIndexes&gt;
  &lt;Parameterization&gt;
    &lt;Object Database=&quot;Database1&quot; Schema=&quot;Schema1&quot; Table=&quot;Object1&quot; Index=&quot;Index1&quot; /&gt;
  &lt;/Parameterization&gt;
&lt;/UnmatchedIndexes&gt;
&lt;Warnings UnmatchedIndexes=&quot;1&quot; /&gt;

SQL Server doesn't know what the parameter values are (because they're in variables), so it can't safely use the filtered index.
One solution is to use index hints (as you mentioned, this isn't ideal).
Another way to work around that is to use dynamic SQL, as described by Jeremiah Peschka here:
Filtered Indexes and Dynamic SQL
I don't know how the filtered index is...filtered.  You might be able to get away with embedding the literal on only one of the two values, to limit plan cache bloat.