I hate to be the bearer of bad news, but there is no general plugin update API, there is only the one Core uses when talking to .org, and it's the only implementation.
Some plugins use filters and hooks to add their own checks to this system, but most don't, or provide their own parallel bespoke checks. These are all highly dependent on the plugins themselves, and don't adhere to any standards.
The closest to a standard there is, are those plugins that provide private composer repos. But these are a minority, and I would struggle to name more than 2 or 3. These are also aimed at the composer CLI tool, composer wasn't designed to be used in a browser frontend, so you won't just be able to load it up and plumb it into the updates page. I estimate composer covers less than 1% of the ecosystem in this way
but how can I find out what the current available version is for plugins like Gravity Forms that aren't in the repository?
For Gravity Forms you will need to pick Gravity Forms apart to figure out how that plugin handles update checking. The same will be true of any other 3rd party plugin, and for a lot of them they may not have this.
For free plugins acquired via GitHub, just check GitHub, but be aware not everybody follows the same process. Some use releases, some use tags, some use branches, some don't and just commit to
master, some use a different main branch, etc
I'm looking for something similar to what the WordPress plugin page is doing when it shows than an update is available - I want to be able to list what's there and what's available to update to.
This does not exist
I haven't been able to find a reference for what I assume must be an API using the plugin URI.
This does not exist.