I believe you're correct that only the top-level identifiers are observed for changes, not their properties. For example, if you have the expression:
{{ { article: article, field: field }}
Only changes to article
and field
are detected -- changes to their properties, such as article.id
are not.
In this case, I was able to get your example to work by replacing the expression & filter with:
{{ article[field] }}
Array access isn't documented as being supported in expressions, but that's apparently an oversight. I've opened a ticket to get the docs updated: