When is the modify_date of an object updated?
What could be altering, or appearing to alter, functions during a database restore?


You can find it using default trace or use SQL Server DDL Triggers to Track All Database Changes. You can even use XEvents depending on your comfort level.

I would say, there has to be some process that does the alter. SQL Server just do not alter selective objects after a db restore.