One thing that has always been challenging for D&D players is to have their character do something that none of the other players know about. This might be something harmless like visiting an NPC from the PC’s past, or it might be something devious like stealing from another character in the party. Passing notes has always been the way that one player let the DM (or other players) know that their character wanted to do something that the rest of the party should not be aware of.
The problem with this approach to secret communication is that as soon as one player does it the rest of the players get suspicious. They have their characters do things that they shouldn’t have any reason to do. Things like checking all their pockets to ensure nothing’s been stolen, or keeping an extra close eye on the note passer’s character during the night watch.
The reason we find it necessary to pass notes is that a lot of players (most players in my experience) can’t separate player knowledge from PC knowledge. If they hear one player say “My Rogue picks the Fighter’s pocket and takes the jewel,” the player running the Fighter will often get upset with the players running the Rogue, even though his PC has no idea anything inappropriate has happened. Because the player knows out of game what’s happened he’ll often change the way his PC acts as if the character knew this detail.