It depends on your requirements.
What would not recommend is something custom like comma separated values in a textfield. Because that's probably the only option where you don't have built-in views/rules/.. support.
Most of the listed solutions require edit access to the node. If you don't want that, you'd need to write custom code which allows users to add themself.
The user and entity reference modules store their information directly in the field information of the node, which might not scale well if you expect dozens or even hundreds of linked users on a single node (because the edit form will get bigger with each referenced user). The new relation project doesn't have this limiation, because every connection is a separate relation entity, which points to both the node and the user. A possible downside of that might be the additional overhead you have, compared to a simple user reference field.
Flag then is quite different to the others. Users can add themself to a node with it easily, but there is no UI provided to add other users or manage users which flagged a specific node (AFAIK), although you might be able to build something using Views, VBO and so on.