vars within vs. vars passed output ?

There seam to be a difference on the stdout output somehow.
If the var is passed via hosts file vars into the playbook it is not
resolved to stdout though it works:

hosts:

[mygroup1:vars]
product=myproduct

TASK: [command chown -R $product:$product /opt/$product]

This is expected.

Tasks are created equally for all hosts, so host specific vars get evaluated later.

(For those familiar with the code, this is runner/init.py where that happens)