It is not a property of millis(). Every counter with limited number of digits once returns to zeros. For example a 4 digits tally counter returns to zeros after 9999. 

Under the hood the variable for millis() is of type unsigned long. That is 32bit. Here the 32 bits are the digits of the tally counter. With only two digits of binary 0 and 1. The maximum is 11111111 11111111 11111111 11111111. After then it returns to zeros if adding 1. The 32 '1' is 4294967295 in decimal. That is 4294967295 milliseconds. If you calculate it to days you get 49 coma something days.

And now you know how computers work. Thousands of binary tally counters.

[![enter image description here][1]][1]


  [1]: https://images-na.ssl-images-amazon.com/images/I/51QV97B6lPL.jpg