If you're using JIRA, you can use SourceTree to document projects and track changes for Git and Mercurial. I think this is a very good question and probably something that hits us most of the time, because we need to work with systems we're comfortable with, then we need to work with systems the client is comfortable using. Personally, I like to use a combination of GitHub with InVision and Slack, but right now our studio is using these combinations with different clients:
- JIRA + Source Tree + InVision + mail
- custom developed documentation repo (client side) + Slack
- GitHub + InVision
- GoogleDocs + mail
- Slack only with documentation as requested
The point is: I don't think there's a single answer to your question, because you can see all of the options above (and there are many more!) actually have their own perks, so you can track documents, screens, conversations, communications and so on, depending on the combination of services you use. And once you find the perfect method for your needs, one client may tell you to use something different. This is specially true in big companies where they have internal systems.
However, there's something we always do, specially with coding: comment absolutely everything and write clean code with references. And in design, you can add notes to PSD/AI, or add comments in services like InVision which also allows you to create some simple UX behavior mockups (Build Mode) or keep track of changes (History Mode)