Hi Greg Duffield,
We had a similar problem with the classic ASP.NET controls -- browsers were caching the client scripts and stylesheets, and upgrading to a newer version sometimes caused problems for browsers with cached copies of an old script file.
We solved the problem in the simplest way possible: we served the scripts off a folder with a version number in its path. That is if a page, index.aspx contained an ASP.NET component, it would load scripts from a path like ~/RadControls/RadXXX/Scripts/2.3.4/SomeScript.js. Whenever you upgrade to a newer version, the 2.3.4 part changes to 3.3.4 or something else, and browsers fetch the new version.
You can do the same for your XAP files. Store them in a subfolder with the version string, and make the <object> tag on the host page look for the versioned path. You can go wild and automate that either with an ASP.NET server-side control or some build automation magic that will always make sure you refer to the latest XAP file.
the Telerik team