вот у вас допустим весь дом в body начинает генерироваться динамически и какой-нибудь скрипт обращается к элементу x. Но вот проблема элемента еще нет, и тут не помещение в head или body вам не помогут. defer нужен.
а async не плохо так ускоряет загрузку страницы если знать куда пихать. Например один скрипт красит ссылки в красный цвет, а другой параграфы в зеленый, и допустим у нас всего это овер до***я. Так зачем ждать пока ссылки покрасятся и потом параграфы если они не связаны? Скрипты моно пустить параллельно сэкономив время загрузки.
P.S. Примеры грубые, но наглядные.