I've done some more testing.
I checked the recovery interval using sp_configure, and it's identical on both the 2005 server on which it works fine, and the 2008 server (which I have now upgraded to SQL Server 2008 developer edition).
The reason the backups are being stopped, is because the CHECKPOINT process on the 2008 server seems to be constantly working on the various databases, which causes the DBName in "sp_who2" to change to those bases when it's working on them. (there is as far as I can see only one CHECKPOINt process, which is always there regardless of whether there is any activity or not)
The CHECKPOINT process is also there on the 2005 server, but there it has a status of SUSPENDED, and never seems to change its DBName to anything except "master" and occassionally "tempdb" regardless of whether there is activity or not.
The problem with the way CHECKPOINT is behaving on 2008 is that the program that performs the restoring of the backups does a check between restoring each database, using "sp_who2" to see if any processes are working on that DB - if the CHECKPOINT happens to be running on that particular DB just then (which it very often does, possibly because a query for the database's ..sysfiles table is done just beforehand to get the filenames) it termiantes the restore process.
This is probably not a bug - the 2 versions of SQL server just behave
differently, and it just happens to cause problems in this particular
case.
So basically, I need a way to make the 2008 server's checkpoint process behave like the 2005 one.