JavaScript (ES6), 61 bytes
Expects a list of 2-character hexadecimal strings.
a=>a.map(s=>(g=k=>k&8?'':g(-~k)+" X"['0x'+s>>k&1])``).join`
`
Commented
a => // a[] = input array
a.map(s => // for each string s in a[]:
( g = k => // g is recursive function taking a counter k
k & 8 ? // if k is equal to 8:
'' // stop the recursion
: // else:
g(-~k) + // do a recursive call with k + 1
" X"[ // append either ' ' or 'X':
'0x' + s // parse s as a hexadecimal string
>> k // right-shift it by k position
& 1 // and isolate the least significant bit
] // end of lookup
)`` // initial call to g with k zero'ish
).join`\n` // end of map(); join with line-feeds