JavaScript (ES2022), 141 bytes
s=>a=>" "+s+s.replace(/(?:[^+-.<>[\]]+|.)(?=(.*))/g,(c,e)=>``+(c+e.replace(/.|$/g,'')).padStart(s.length+5)+a.at('><+-.,[]'.indexOf(c)))
f: (source_code: string) => (explain_array: string[]) => string
s=>a=>" "+s+s.replace(/(?:[^+-.<>[\]]+|.)(?=(.*))/g,(c,e)=>``+(c+e.replace(/.|$/g,'')).padStart(s.length+5)+a.at('><+-.,[]'.indexOf(c)))
f: (source_code: string) => (explain_array: string[]) => string