My guess it that Serial.write interprets the array values as a string
Is there some reason that you think it shouldn't? What you have assigned to each element of the array IS a string.
how can I use an array to assign values to the buffer in a way it does work?
Step 1: Use a type that makes sense. char is, in my opinion, for holding characters. It does not sound like that is what you want the array to hold.
byte profile[4][8] = {{0x01, 0x04, 0x04, 0x04, 0x01, 0x1D, 0x01, 0x1C},
{},
{},
{}};