As explained in the Microsoft support article here:
The Microsoft Jet database engine is inherently case-insensitive. When joining tables, it matches lowercase "abc" to uppercase "ABC," which in most cases is desirable.
(The same is true for the newer "Access Database Engine", a.k.a. "ACE", which is used by Access 2010.)
The article goes on to describe several strategies for performing case-sensitive JOINs. Of those, the one that is most likely to work for you (where you need both your JOINs and your GROUP BY clauses to be case-sensitive) is the one they call "Hexadecimal Expansion" where you create another column in each table that will store a hexadecimal representation of the ID value. The function they suggest is...
Public Function StrToHex(X As Variant) As Variant
Dim I As Long, Temp As String
If IsNull(X) Then Exit Function
Temp = Space$(Len(X) * 2)
For I = 1 To Len(X)
Mid$(Temp, I * 2 - 1, 2) = Right$("0" & Hex$(Asc(Mid$(X, I, 1))), 2)
Next I
StrToHex = Temp
End Function
...which will work provided that your ID strings do not contain Unicode characters. That function will convert a string into the hex representation of each character, e.g.,
StrToHex("GORD") --> "474F5244"
StrToHex("gord") --> "676F7264"
Once you've populated your new "surrogate ID" fields with the corresponding hex values you can use those fields in your JOINs and GROUP BY clauses.
For more information see the above-mentioned support article: