It is all in the eye of the beholder. Primarina has the lowest Attack/Defense stats and is tied for the slowest Gen 7 Starters. Gameplay wise, Hau will choose Litten (final evolution is weak to both of Primarina's STAB moves), and Kukui will battle you with Decidueye (Ghost attacks regularly against Water/Fairy), so when you battle Kukui, it will be easier since he has all STAB moves that with the other starters. If you choose Litten/Incinaroar, Kukui will battle you with Primarina (Both STABs are super effective), and Hau will choose Rowlett (Both of your final STABs are super effective againt Decidueye's). If you choose Rowlett (my starter), only one of its final evolution STAB moves are super effective againt Hau's Primarina, and both of Kukui's STABs for Incinaroar are super effective against your Pokemon. If you add all of Primarina's weaknesses together, it adds up to 17 points. If you add up all of Decidueye's weaknesses, it will be 19. If you add up Incinaroar's weaknesses, it will be 18. Primarina has 3 weaknesses. Incinaroar has 4. Decidueye has 5. Every ending starter is immune to some type, But Decidueye is immune to more types of Pokemon (by 1), and they are more common than the other types. Primarina and Incinaroar have 6 resistances, while Decidueye has 4. Primarina has the highest Special Attack/Defence, Incinaroar has the highest attack/HP/defence, and Decidueye is faster (which is what I chose it for) and is more popular. So in conclusion, Primarina isn't as bad as some people say it is, and all the starters are good ones. It is just a matter of personal preference.
Sorry if it is grammatically incorrect or confusing; I blame the fact that I did this late at night