As far as I know, Program Files and Program Files (x86) require Admin Permissions for files to be created and run, this includes something to do with the Windows Registry as well.
AppData can allow software such as Firefox and Chrome be installed without Admin approval, that's why a Standard user account can install their own browser and why it's better for security purposes.
One of the benefits of installing to Program Files is that is exactly where the user expects it to go. Usually users go here first to look where the program is installed. The biggest downside is that the user needs administrative privileges, which isn't always required by the program.
These are vice versa since the purpose of installation of programs is to place the files in an easy and functional matter to avoid messy and confusing directories.
So AppData usually place for the logs, other non-operational components and meanwhile Program Files for critical files that needs to function properly and tightly secure,
Some apps install to AppData so employees at companies can use the app. Employees are often assigned to Standard user accounts, and they can't install anything that lands in Program Folders, because it needs admin privileges for the installation.
I wonder, why some install to %ProgramData% instead of %AppData%? One game installs a mod to %ProgramData% and people have constant problems running it, so the the dev says, that they have to run it as admin. It can be solved by taking ownership, but it does not make sense then.
EDIT: P.S. There is also %LocalAppData%, so it is only getting complicated.