You could...but then you are locked into it being an x.
Think about large software development groups. they may be broken down into teams. Team A want to use a widget. Team B will write the widget. Team B could say "here is a static method that will return a widget of type x".
Team A will call that method to get an object they will use.
Now, if Team A writes their code to always expect an object of type x, everything is fine. But suppose in a year, Team B comes up with something that works better, faster, and uses less memory. They can now say "We will give you a widget of type y". Team A has to go through every single line of code and look for what needs to be changed.
If Team B has said "we will return something that implements the Addition interface"...
Team A writes their code with references to have reference types. Then, when team B comes up with their new widget, Team A doesn't have to change their code since they will still be getting something that implements the Addition interface. The actual object type doesn't matter.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors