A key reason is that off-peak services are often subsidised by on-peak services, so to economically provide a good all-day service the whole thing needs to be provided by the same operator.
No reason to require a single operator, you just need a shared "pot" to move money around. On-peak trains pay into the pot, off-peak trains get money from it.