Такая себе аналогия.
Их придумали чтобы быстрее разрабатывать приложения и писать код. Т.е. вместо того, чтобы городить длинные строки кода, чтобы реализовать такую вещь как класс, либо переменная, можно было бы написать одну строку. Ну и тут всё понятно.
А UPROPERTY по моему не такая уж длинная строка, чтобы делать дополнения.
Ну т.е., я понимаю что там есть какие-то свои плюсы в DPROP и остальных макросах, но они чёт плохо задокументированы, если вообще задокументированы, лол