in reply to Directly remove an entry from the symbol table

FWIW, if you replace the last two lines of your script with

my $f = $Foo::{'new'}->( 'Foo' ); $Foo::{'foo'}->( $f );
...it runs without error. I am not 100% sure I understand your question, but if you are asking why manually removing the Foo entry in main's symbol table does not result in the automatic destruction of the Foo typeglob, I don't see any a priori reason why this should be the case.

the lowliest monk