the reason is simple ..... different algorithms give different results
for example srep, lzham, lzma and xz(lzma2) all use the same variant of lz77 original algorithm on the other hand zstd has lzo variant algorith with fixed dictionary and entropy encoder all on it ... so it trades its ratio for a maximum of 500 mb per thread per sec
now to get to the point srep + xz = lz77 + lz77 so it gives its best ratio on the file
srep + zstd + xz = lz77 + lzo + lz77 so the xz cant perform its best on top of an lzo algorithm
i hope i got clear on this, please ask any questions that you like
if i can answer it will do for sure