First of all, the answer is 'yes', you can access these arrays by name. You'd use the CallByName() function which enables you to access any property (and, indeed, method) of an object by its name, passed as a string.
The small adjustment you'd need to make to your code would be to create an object which contained the arrays as properties. Specifically, you'd do this by inserting a Class object (Insert > Class Module). In the example below, I've called the class cArrayFields and added your code as follows:
Option Explicit
Public GEN As Variant
Public POL As Variant
Public B2B As Variant
Public RUS As Variant
Private Sub Class_Initialize()
GEN = Array("username_01", "username_02", "username_03", "username_04")
POL = Array("username_02", "username_03", "username_04")
B2B = Array("username_03", "username_04")
RUS = Array("username_04")
End Sub
In your main procedure (the one in your module), your code would simply be:
Dim o As cArrayFields
Dim targetShape As Shape
Dim targetName As String, shapeText As String, aUser As String
Dim arr As Variant
Dim i As Long
targetName = "MyShape"
aUser = "username_03" 'test example
Set o = New cArrayFields
For i = 1 To 4
Set targetShape = ActivePresentation.Slides(i).Shapes(targetName)
shapeText = targetShape.TextEffect.Text
arr = CallByName(o, shapeText, VbGet)
Debug.Print IsInArray(aUser, arr)
Next
However, I wonder if your users and responsibilities are structured in the most efficient manner. A more intuitive way to go might be to have a list of users and each member contains a list of the areas they are responsible for. If you did it this way, then the look-up would be far simpler; for example you could just use a Collection object, which accesses each item by a String key. So your code could just be a couple of small routines to create the lists:
Private Sub DefineUserList()
Set mUsers = New Collection
AddNewUser "username_01", "GEN"
AddNewUser "username_02", "GEN", "POL"
AddNewUser "username_03", "GEN", "POL", "B2B"
AddNewUser "username_04", "GEN", "POL", "B2B", "RUS"
End Sub
Private Sub AddNewUser(userName, ParamArray respAreas() As Variant)
Dim resp As Collection
Dim v As Variant
Set resp = New Collection
For Each v In respAreas
resp.Add True, CStr(v)
Next
mUsers.Add resp, userName
End Sub
And then your look-up routines in your main module as follows:
Option Explicit
Private mUsers As Collection
Public Sub Main()
Dim targetShape As Shape
Dim targetName As String, shapeText As String, aUser As String
Dim i As Long
DefineUserList
targetName = "MyShape"
aUser = "username_03" 'test example
For i = 1 To 4
Set targetShape = ActivePresentation.Slides(i).Shapes(targetName)
shapeText = targetShape.TextEffect.Text
Debug.Print IsUsersArea(aUser, shapeText)
Next
End Sub
Private Function IsUsersArea(userName As String, respArea As String) As Boolean
On Error Resume Next
IsUsersArea = mUsers(userName).Item(respArea)
On Error GoTo 0
End Function