Aligning labels under geom_col with varying widths

suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(ggplot2)) 
help.data <- data.frame(
        stringsAsFactors = TRUE,
        row.names = c("16", "9", "6", "1", "18"),
        bName = as.factor(c("APACHE HALL","ANTHROPOLOGY","AHSC","AEROSPACE/MECHANICAL ENG","ARBOL DE LA VIDA")),
        constYr = c(1957, 1962, 1968, 1997, 2009),
        gsf = c(38906, 30876, 460019, 184586, 234455),
        bldgType = c("Dormitory", "Academic","Medical","Academic","Dormitory"),
        eui = c(33.4818633521822,86.3320853089779,526.612007183703, 214.404397950007,79.3320687466678))
p <- ggplot(help.data, aes(bName,eui, fill = bldgType))
p + theme(axis.text.x = element_text(angle = 90, size = 7, hjust = 1)) + 
    xlab(NULL) +
    ylab("EUI (kBTU/gsft)") +
    geom_col(aes(x = reorder(bName, constYr), y = eui, fill = bldgType), 
                    width = help.data$gsf/max(help.data$gsf)) +
    ggtitle("Energy Use Indices", subtitle = "Width proportional to gsf")

Created on 2020-03-13 by the reprex package (v0.3.0)