so I'd do whatever you're comfortable with myself.
In my case I tend to use synchronised version numbers. For big APIs (20+ classes) I often use Class::Autouse to recursively load them.
If two subsequent versions of the dist change the name of a module from
Foo::Bar to Foo::Baz, then the CPAN installer doesn't remove the old one, instead it keeps them both.
By using synchronised versions to describe a "set" of modules, I can write a fairly simple test script that recursively autoloads all the modules, and then checks all the versions are the same. This ensures that I didn't accidentally load in an old/incorrect/broken module I wasn't expecting.
Of course, this ONLY applies for very large APIs. In things where you are manually using each child module this won't matter so much (although I do it from habit anyways).
So, to add a specific recommendation
"When using automated recursive module loading, you should keep the version numbers the same"
Adam K