filter_duplicates() removes duplicated points from a point cloud. There is no native function to remove overlapping tiles because each case is likely to be data specific an prone to false positive.
If two files overlap it may or may not be a problem. It is a problem if duplicated points are present into the files and are subsequently loaded together. For example if each tile has been extended with a buffer. However if the bounding boxes of the files overlaps but the actual point-cloud is continuous without duplicated point it is not a problem. What you must understand is that
lidR loads successive areas and the question is: does loading an arbitrary area of interest will load an invalid point-cloud?
In your case I don't know if you must of must not remove some files. Assuming that the point-cloud is legit and you want to use all the points you can keep all your files and process by chunks of 1000 m
opt_chunk_size(ctg) = 1000
But you must not process by file because this will generate invalid areas because of overlapping tiles (in your case twice the same area). Indeed by file does not mean "by file" but means that the successive areas processed are generated from files which make sense only for contiguous and non overlapping tiles.
If you want to remove the overlapping tiles you must do it by hand. For example looking for duplicated bounding boxes
rm = duplicated(ctg@data[,c("Max.X", "Min.X", "Max.Y", "Min.Y")])
ctg = ctg[!rm,]
It works only if the bounding boxes are exactly the same. If there is a millimetre of difference it won't detect duplicates. Is this case you could round the coordinates for simple cases or make more complex comparisons for more complex cases.