Using the official example "Landmark SLAM Using AprilTag Markers", I partly understand that factorGraph is more general than poseGraph/3D, mainly below items:
1, factorGraph can fuse different types of odometer data, e.g. the main program can fuse GPS, IMU, etc. （It would be nice to have additional factorWheel support in future versions）.
2, factorGraph can also specify the initial state through the factorPoseSE3Prior object function, unlike poseGraph which can only build a trajectory graph from the origin.
3, factorGraph performs faster in terms of pose graph optimisation performance, except for a bit of overhead when building objects.
4,factorGraph has no limitations or caveats when it comes to deploying generated C code.
5,factorGraph supports the import of files with the ".g2o" suffix.
That's all I've found so far, feel free to add any better answers.