It could, and should, be a science. Or at least pragmatic.
If you look at clothing design, the fashion side is mostly outlandish and completely impractical. Eventually good ideas filter out of that and get into everyday clothing manufacturing, which is what everyone can actually wear.
The problem with UI design is that UIs need to be used every day, like ordinary clothing, but its becoming like clothing fashion: changing too often and usually full of flashy but unusable cruft. This would be ok if it was limited to a small number of fashionable websites, but instead everyone (but most developers) want the flashy.
High fashion is mostly outlandish and completely impractical, because it is about concepts and abstract ideas more than about wearability. High-end fashion (not high fashion) on the other hand distils the concepts into wearable products that the every-day brands emulate.
The gap from high-end fashion to everyday brands is not so big - take a look at e.g. GQ and look around you to see what people actually wear, and you will quickly start seeing the same patterns and cuts and colours a few months offset (because the fashion magazines tends to report on the upcoming season), just in cheaper imitations - for the most part. And you'll see them spreading as they filter down the cost ladder.
And by the time "everyone" is wearing the cheap imitations, you'll see people in the designer brands wearing different styles and the cycle starts again.
It's the same with UI's: There's a continuous cycle of trying to look modern, refined and exclusive, and so it needs to be regularly reinvented, or it will look old-fashioned, drab and cheap.
It's not about wanting "flashy" (mostly; there are certainly sub-cultures that value flashy above following mainstream fashion). It's about wanting "modern" and "high value".
Fashion is a science, or at least it is governed by human behavior in their sense of time. "Freshness" provides a feeling of improvement over time, while "staleness", though more familiar and comfortable, provides a sense stagnation, that time is frozen. It is really no wonder why young people are interested in being "fashionable" (they want time to progress, they want change) while old people are often not so interested in it (they already have a lifetime of change to reflect on).
For many websites, sure, it is superfluous, but the psychological effects are massive; ignore it at your own peril.
It's pretty much the same with applications and websites. The "trendy" ones seem to have fancy interfaces that are useless (I'm thinking of this trend in web page design to have vertically scrolling pages where each page is a different color background and has about 3 words of actual content on).
Real applications pretty much ignore all that and look like they always have
I think that modern ui design is being approached more like package (graphic) design. That is: when your product is displaying on shelves with ten similar products you need to make it flashier and more colorful, yet similar to everything else in the same category. All cereal package design looks similar, yet, everyone tries to outflash everyone else.
For some reason, we designers are still designing with this mentality.
Form follows function is incredibly undetermined. Multiple divergent designs can execute/allow the same functionality to the same degree.
This is especially true in software. Some additional constraints must be put on to narrow down on a single design. Maybe the constraint is developer familiarity, or developer laziness, or fashion, or whatever.
While there can clearly be 'too much' fashion, its not quite a given that current trends lie in that area, any more than previous trends have.
There are lots of books on evidence-driven UI design.
It depends whether you mean fashion in design principles driven by evidence or visual fashions like in clothing. I think both are inevitable to some degree.
How could it possibly be anything else?