Multiple 8 bytes programs are possible:
Explanations:
· # Double the (implicit) input-integer
# i.e. 3 → 6
ÅÉ # Pop and push a list of all positive odd values below this doubled value
# → [1,3,5]
'#× '# Repeat "#" that many times as string
# → ["#","###","#####"]
.c # Centralize this list (which implicitly joins by newlines)
# → " #\n ###\n#####"
L # Push a list in the range [1, (implicit) input-integer]
# i.e. 3 → [1,2,3]
'#× '# Repeat "#" that many times as list
# → ["#","##","###"]
€û # Palindromize each
# → ["#","###","#####"]
.c # Centralize this list (which implicitly joins by newlines)
# → " #\n ###\n#####"
L # Push a list in the range [1, (implicit) input-integer]
# i.e. 3 → [1,2,3]
· # Double each value
# → [2,4,6]
< # Decrease each by 1
# → [1,3,5]
'#×.c '# Same as the first answer above
'#× '# Repeat "#" the (implicit) input-integer amount of times as string
# i.e. 3 → "###"
η # Take the prefixes of that string
# → ["#","##","###"]
j # Pad spaces to each to make the total length equal to the (implicit) input
# i.e. 3 → [" #"," ##","###"]
€û # Palindromize each
# → [" # "," ### ","#####"]
» # Join by newlines
# → " # \n ### \n#####"
For each of these programs the resulting string is then output implicitly (with trailing newline).
#
? \$\endgroup\$