Немного не понимаю, они одинаковые? По сути оба позволяют асинхронно обрабатывать скрипты и загружать саму страницу параллельно, объясните разницу.
Атрибут async выполнит скрипт когда он загрузится, не смотря на порядок скриптов, а defer сохранит порядок скриптов, пока не загрузится первый скрипт, второй не сработает.
Атрибут defer используют когда есть прямая зависимость между двумя скриптами, например второй скрипт использует что то описанное первым скриптом. Так же скрипты с атрибутом defer сработают когда весь HTML будет обработан браузером. Async же выполнился бы раньше.