It seems impossible at the moment. Even on the design/idea level, collections are not like layer folders in Photoshop, an object can belong to multiple collections, so it's not clear what the behavior should be in such a case:

If you added a custom property alpha to each collection, and a custom property 1st_col_alpha to each object, you could then add a driver to the latter:
self.original.users_collection[0]['alpha']
Which would use the insecure Python (need to enable script autoexecution, read about the security considerations here) to copy the first collection's alpha to self alpha, which then can be accessed in the shader this way:

Unfortunately this has a problem with refreshing, changing the collection property doesn't automatically refresh the driver. There are various ways to fix it, one would be to simply force a refresh each frame by modifying the driver this way:
self.original.users_collection[0]['alpha'] + 0*frame
