I'll try to explain you the purpose of Access Tokens in reference to the Facebook API.
A uid
(User Id) is something that can uniquely identify a user on Facebook. For example: 1786565687
(that's me by the way). Whereas, an Access Token is an opaque string that identifies a user, app, or page and can be used by the app to make graph API calls. A User Access Token for instance is needed any time the app calls an API to read, modify or write a specific person's Facebook data on their behalf.
I've also read that it isn't necessary to use the token, a User ID
would suffice.
This is true but using a user Id, you an only obtain a limited amount of information related to a particular user. For example: https://graph.facebook.com/1786565687
will provide you only a limited amount of information for the user Rahil Arora (that's me again) and you won't be able to write or modify on my behalf.
Whereas, using a valid Access Token, you an even write or modify a specific person's data on their behalf. Because of privacy checks, the majority of API end points on Facebook need to include an access token and therefore you can't access there end points by just using the user Id. You need a valid Access Token in order to access extra information related to a particular user. For example: https://graph.facebook.com/1786565687?access_token={Access_Token}
will give you a lot more information than the previous call.
what determines whether you use a token or the User ID is simply
enough to identify the user?
Well, as you can see, you can choose either a token or just a user id depending on the type of action that you're willing to perform.
You can refer to the links posted in the answer for further information.