The package.xml files contain rosdep keys for system dependencies as well as ROS package names. Sadly there is simply no 1-to-1 mapping between those and the find_package() names. So any heuristic (like as it is done in catkin_simple) will never work 100% reliable. That is the reason why the developer has to specify them separately.