Creating an attribute in the back end is easy, then why to create it as programmatically?
I like to know what is the difference between these two.
If you work with the team with more than 1 member, then you need to sync all attributes with your team members. In that case, programmatically will help you.
If you are the only one on the team, then choose what is easy for you.
Another reason is: programmatically will assign attributes to all attribute sets automatically, otherwise, you need to create an attribute and assign it to all attribute set manually.