Historically, tray icons on Linux used the Xorg based System Tray protocol. Its successor, StatusNotifier, is based on DBus and is therefore not bound to Xorg, but also works on Wayland. Beginning with version 13, TeamViewer supports both protocols.
Most mainstream desktop environments support at least one of these protocols, but recent versions of plain Gnome 3 support neither.
TeamViewer without status icons
TeamViewer does not require a status icon. All functionality available via the icon is also available by other means.
If you have selected start with system in TeamViewer options, TeamViewer will notify you on startup that it is running in the background, to let you know it is there. Launching TeamViewer from the launcher or menu will bring it to the foreground.
Gnome follows the philosophy that status icons should not be needed and therefore does not show status icons by default. However, some distributions (e.g. Ubuntu) bundle Gnome 3 with a shell extension to show status icons. If your Gnome 3 does not show status icons, you may install an extension to add support for it. Here are a few to choose from: