This is working as designed.
When you define a variable in a role, that role might be something like "common" and package variables that other roles might like to use.
For instance a role could define "production" vs "staging" environment behavior, and a value like "ntp_server" could be used in subsequent roles.
When roles look for files, they look for files relative to them first, then at playbook level.
However, we don't comb all file paths, as it would be difficult to source where files were drawing from -- as it's not improbable two different files might share the same name and different paths. The files are only searched in two places -- the files (or templates) dir, and the level up.