I'm not entirely sure. I have a script extension I created for handling SQL queries and I instantiate an ADO.CreateConnection object in there as a global... that object is ALWAYS there, no matter what I do. So long as there is a variable that contains an instance of Excel.Application, it will always be present in memory.
So, the simple fact that you have a global variable instantiated as OleObject('Excel.Application') I think means it will always be memory resident until you set that variable to nil or null... Because it's a run time object, it never goes out of scope and so it never gets reassigned.