Reflections are associated with the query tree that defines the VDS rather than the VDS itself. This is generally beneficial as it allows the matching process to match on reflections that may be associated with ancestor or sibling datasets, allowing for more frequent cache hits.
In your example, the underlying query for the VDS is fairly complex with several joins, aggregations, and sub-queries. As a result, the matching process to determine whether the reflection covers your query is more complex and sometimes will not match. The more simple the underlying query for a VDS the more likely the match will be successful.
There are some enhancements to the matching algorithm we are planning for a release in the near future that will consider the relationship of the VDS to the reflection. We will report back here to let you know when you can give it a try.