I also wondered for quite some time why my Logitech C920 webcam seemed to be using much lower framerates (which could be perceived as "laggy") in Linux as compared to Windows. It turns out it was transmitting uncompressed YUV frames by default, and for that, the bandwidth of my USB port just wasn't enough. (Maybe in USB C it would be enough, but this webcam isn't USB C.)
It worked like a charm after I manually set the format to H.264 in OBS. ("Like a charm" meaning it was transmitting 1920x1080 at 30 fps.) Unfortunately, I don't know how to do that in an application-agnostic way, but maybe someone else here can enlighten us. Worst case, install https://github.com/umlaeute/v4l2loopback and pipe your webcam stream through OBS...
I think it's possible that this is the same problem that you have run into.