05AB1E, 3132 31 23 bytes
.•2Bãθ(•×£R„vr…v•VvÈ©•¹∍¬„ rv:ð«η¤S)ζJ.∞Rηε¬ý}.c -1 thanks to Kevin Cruijssen and -8 thanks to Adnan
Explanation (Stack example w/ input of 3):
.•2Bãθ(••VvÈ©• # Push 'aibgyor' | ['aibgyor'] ¹∍ # PushExtend 'vibgyor'to input length. | ['aib'] ×£ ¬ # Push head. # Dupllicate string N times-- take first N chars. | ['aib','a'] R„ v: # Replace with ' v'. | [' vib'] R # Reverse. „vr…v r: | ['biv '] # Replace 'vr' with 'v r' η # Prefixes. | ['b', 'bi', ð«'biv', 'biv '] # Pad a space onto the endε } # For each. ... | [] η ¬ý # PrefixesBifurcate, join by head. | ['b','b'] -> ['bbb'] ¤ # Tail (largest prefix). | ['bi','ib'] -> ['biiib'] S)ζ # Transpose the tail onto the prefixes. | ['biv','vib'] -> ['bivvvib'] J.∞.c # Join, Mirror | ['biv ',' vib'] -> ['biv vib'] .c # Center the result. | Expected output.