The guidelines are pretty clear:
Versioned dependencies (build-time or runtime) SHOULD ONLY be used when actually necessary to guarantee that the proper version of a package is present.
The subpackage should include the versioned dependency only if the subpackage requires a specific (or minimum) version to operate. It shouldn't include that Requires at all unless there are features of the subpackage that rely on the required package. And the top level package should only include the Requires line, with or without version, if there are features of the main package (without the subpackage) that genuinely require a specific/minimum version of the dependency, or requires it at all, in order to function.
Dependencies shouldn't "propagate" from main packages to subpackages, or vice versa. Specify only what applies to the immediate, innermost package level, and let the depsolver do its job. It's hopefully uncommon, but I can certainly imagine situations where a package requires a certain minimum version of a dependency, but its subpackage is fine with any available version, even a lower one. If that's the situation you have there, then spec it accordingly.