There is an AMD loader that does what you are looking for:
- LSJS: https://github.com/zazl/lsjs
- Wiki for LSJS: https://github.com/zazl/lsjs/wiki
It also contains a timestamp functionality where you can send a JSON object with the current file timestamps to the server. You would then need to write a server component that returns an array of files to update.
The "Getting started" section of the wiki contains a Dojo example so it should be possible to use with Dojo. However, you will be replacing the Dojo loader with another AMD compliant loader, which might cause problems. My guess would be that this will not be a problem.
This is not the standard way to update Apps, why not just use the normal phone app update route? It will mean that an Internet connection is needed for first use of each component. Components are loaded only when they are required into the code. You might have a component hidden deep in the application that is not loaded and then suddenly the user needs an Internet connection.
However, I assume you have considered all these things and if your App requires an always on Internet connection anyway, this will not be an issue.
You are also introducing an extra security concern for your app users. Should your server be hacked then code could be sent to all your users and executed on their phones. The standard App Store Update functionality adds another layer of security (albeit small) for your users.