Does the following aggregation guarantee a default ordering for the documents assuming that the $match returns unique documents? Or we always have to include a sort step to have consistent results across pages?
If you don’t include the $sort stage, the results will be returned in the order they are found (natural order). That does not guarantee that the order will be the same every time.
If you want the consistent order of the results, you have to include $sort stage, as @steevej already mentioned.
Since you don’t need any specific sort, I suggest you to sort based on the _id field since it’s indexed by default.