It's not really that difficult to make your own plugins check your own repository and update from your own servers and such. You don't really need anything complicated, it could be as simple as pulling a static file for a version number and the ZIP package information.
The main gist of what you have to do is this:
PHP Code:
$up = get_transient('update_plugins');
$data = new stdClass;
$data->slug = 'plugin';
$data->new_version = '0.2';
$data->url = 'http://example.com/whatever';
$data->package = 'http://example.com/whatever/plugin-0.2.zip';
$up->response['plugin/plugin.php'] = $data;
set_transient('update_plugins', $up);
Whatever magical trickery you use to accomplish that will probably work fine. The easiest way would be simply to retrieve a text file (using wp_remote_get), compare the version numbers, and update the settings if the version numbers increased. That'd have the lowest server impact too.
Now, in the example given earlier, he uses a filter on the transient_update_plugins, which is certainly one way to do it. This would not be my favorite way, mind you, because the get_transient for that happens too often, you're wasting resources.
A better way would be to create your function and hook it to the existing wp_update_plugins action hook. Your function would do basically the same thing, except that you'd get and set the transient yourself. Using this action hook means you run at the same time the normal plugin updater does, without extraneous checks.