In Linux the driver has three multicast operating modes.
Multicast can be disabled.
It can be enabled, IFF_MULTICAST. The driver looks at multicast packets to see if they match *dev->mc_list which is a list of currently configured multicast addresses (usually managed by the applications that need the group).
Then the last mode, IFF_ALLMULTI. In this mode the driver forwards all multicast packets to the kernel for handling. This is commonly used for routing since you don't usually want the router to be a client of the stream/group but a courier for it. Here is some more information on the internals of that: