Hi,
I'm writing a total functional language as well. I think that garbage collection is still useful however, as it can collect garbage as the program runs, not just at the end.
I would say that just because your memory use is deterministic, doesn't mean you don't get garbage. Garbage is just memory that isn't needed any more.
for example, in
let
a = f(x)
b = g(y)
in
a + b
If there is working memory used in the body of f(), it will be garbage when f() has finished executing, because it won't be referred to any more.
So it could be freed after f is executed and before g is executed, which may reduce the maximum amount of memory required by the program.