Prior to rails 2.0, @flash contained the same thing as flash (but was deprecated).
When you do render :partial => 'flash', it picks up on the @flash variable (which is still there but nil) and assigns that to flash in your partial.
So you can get round this by:
-renaming your partial
-using flash()[:foo] instead of flash[:foo] (which will tell ruby to do the method call rather than use the local variable