Join is designed to create a single object from multiple objects, such as creating a single polysurface from multiple separate surfaces and/or polysurfaces. A single object can only have a single material associated with the object.
Group tells Rhino to treat a set of objects as a single entity without creating a new object.