すべて羅列するなら(名前付き引数や**kwargsは除外)
単数
①def add_user(user: User) #一般的
②def add_user(user: List[User]) #関数名からListである必要性を連想できない
③def add_user(*user: User) #あるっちゃある例print
④def add_user(*user: List[User]) #②同様
複数
①def add_users(user: Users) #UsersのUser取り出しロジックがUsersのデータ型に依存、関数名での補足がいると思う
②def add_users(user: List[User]) #よくみる、①の発展、だがList展開ロジックが必須で暗黙的
③def add_users(*user: User) #=単数③、より明示的
④def add_users(*user: List[User]) #=単数④

単数④複数④は無い、関数名次第ではアリ

あくまでadd_user,add_users名でやるなら
単数①、単数③、複数③、複数②だな
本質は複数①②が同列に扱われている、という部分だと思う