With my experience of using them
Three.js + WebXR - You can do anything, still WIP APIs, supports only Chrome on Android, no support on iOS Safari yet (soon maybe)
https://threejs.org/examples/?q=webxr#webxr_ar_cones
https://threejs.org/examples/?q=webxr#webxr_ar_hittest
https://threejs.org/examples/?q=webxr#webxr_ar_paint
ar.js - marker based, location based, pretty good set of components and helpers avaiable from ar.js repo, works everywhere Android and iOS. most of the times I have seen it’s not maintaining 60 FPS. and has limitations how the marker should look like, it needs black border to detect images. No Markerless feature.
a-frame - You can use A-Frame with AR.js easily too. AR.js creators have created A-Frame componets to use it.
playcanvas-ar - Not sure havn’t used it
One more things you should take a look at is https://modelviewer.dev/ if your requirement is all about rendering 3D models on web pages and have a AR feature to view in your space.
it has pretty good AR features too
https://modelviewer.dev/examples/augmented-reality.html
https://modelviewer.dev/examples/webxr.html