Наверное, потому что под капотом мьютекс и простая переменная может быть, и роль того, что держит поток в состоянии сна, выполняет мьютекс
Была такая мысль, но тогда весь объект cv должен про этот мьютекс знать, т. е. он должен был бы передаваться в конструктор, а не только в wait()