Went through this myself over the last few months. With the exception of Moodle, I've noticed that many Git repositories for 3rd party plugins are often either not up to date or a work in progress. Some plugins don't even have a corresponding git repo because they use some other kind of version system. In some cases, the Github repo didn't contain branches for the version I needed and, when they did, they didn't use standard naming conventions for the branch names.
This lack of standardization makes it near impossible to use Git repositories to correctly automate the installation of plugins using regular Git methods.
What I ended up doing is downloading plugins from their download link on the Moodle plugins site into a parallel directory structure (e.g. moodle-plugins) that mirrors their location if they were in Moodle. To manage the version issue you noted, I added the moodle version number to the folder. For example, I have a moodle-plugins/theme/essentials27 and a moodle-plugins/theme/essentials28. my script copies the folder, parsing out the number from the folder name during the installation. This allows me to have a version of the plugin for each version of Moodle. When a plugin applies to multiple versions of Moodle, I simply create a symbolic link to the original folder so that I only have to maintain one version of the source code.
As for Moodle itself, I use Git to simply clone/fork moodle.
Finally, when I need a new site, I use a script I wrote that copies Moodle into it's destination and also copies any required plugins into their correct location from my moodle-plugins folder.
This approach enables me to easily use "git pull" to update each of my Moodle sites when a new release becomes available. As for the plugins, unfortunately they still need to be manually updated.
It's a semi automated process but, once I had the script written, it saves me hours of work. I can now create a new site in about 3.5 minutes. My script actually prompts me for basic site specific information, performs the full installation, configures file and folder permissions, installs language packs, and then customizes 300+ core and plugin settings.
If you figure out a better way to manage updating of the 3rd party plugins, I would appreciate it very much if you would please share.