A golden rule that I learned with the Maven community is to explicitly declare the dependencies your project needs, it's just good practice.
Don't bother about declaring a dependency multiple times, Maven does an excellent job on managing it, but one thing you are doing, and it's good, is to keep the version management in a single place.
Maven documentation - says that dependencies with <scope>provided</scope> are non-transitive, it means their availability scope is limited and are available only to the project declaring the dependency itself and it's direct childs(modules), but it won't be available to downstream projects that import the lib as a dependency.
Yet, the documentation says in the Importing Dependencies section that it's possible to inherit managed dependencies from another project using the scope import.
It requires some extra work, but this allows inheritance of provided dependencies; declare them without version, making it easy to keep its version in synch across multiple projects.
The key to make this work is to use both these tags when importing the other project:
<type>pom</type>
<scope>import</scope>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>maven</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>managed-dependecy-group-id</groupId>
<artifactId>managed-dependecy-itself</artifactId>
</dependency>
</dependencies>