I have seen many types. By department, by virtual team, by project, by theme, by site, by mix of internal and external users as in determined by customer or vendor relationship, whole org Teams, by file library access and permissions, personal teams for testing, teams for enthusiasts and teams for social.
It is of course very subjective and there are pros and cons of each type. For example why departments are natural partitions in organisations most users engage in cross department activities so they may not be as useful as virtual teams across departments. So it’s really recommended to base them on how your users work.
As @Christopher Hoard said there’s no right answer! It’s a matter of what your organization look like and what’s your processes looks like! One example could be as following: A team for each department, then a team for cross collaboration containing users from all departments! Each department has a channel ex “finance” which all employees from finance subscribe to. This means they will only be notified when someone posts something in the finance channel from any other user in the org. Then projects can have their own teams! If it’s smaller projects maybe a channel will do!