Some things I've learned about Teams and Groups:
Teams:
can have issues routed to them in the routing rules of queue topics, and a "Team ID" field gets populated on the when this occurs. It gets cleard if you remove the team and name a person as the assignee. However, if you leave the team and add the assignee, then the team ID field remains populated.
tasks/issues can be assigned to teams (all members get a notification)
You can use teams to control access/sharing, just as you can groups.
Teams can be managed (membership) by users in the tool without Admin or elevated rights.
Groups:
Projects can have a group (preset when a user creates a project based on the user's home group)
People can have a group
Issues and Tasks inherit the Group of the Project they're in
Groups can now (or very soon) have sub-groups, which we look forward to testing.
Custom Forms can have groups (allowing users within those groups access to add them)
Custom Statuses (I believe) can be customized by Group. This is a feature coming to GA soon.
Overall, we try to use teams for assigning work and groups for security and affiliation. However, we sometimes deviate and use teams for security.