Is it possible to distribute custom python expressions along with .qgs file?
There is a tab Macros the project properies which allow to specify python code which is run when a project is opened. You can register your custom expressions there.
What I wonder a bit is the sentence
so that when someone alters on it syncs to all the others
If it is shipped with a project, its scope is this project (or actually rather this QGIS session) so there is not much which is synced. If you need to synchronize it between several projects and machines, you are probably better off managing a central plugin. You can have a look at the Expressions plus plugin to get started. In case your expressions are of broader applicability than just yourself I would even propose you add it to this plugin so others can use it as well.
Of course your proposed approach of synchronizing the expression files with some file synchronisation tool is perfectly valid too.