Using Redhat 6.2 with initscripts 5.00-1 I have found that ifup fails to return the command prompt after executing. I run /sbin/ifup ppp0 and it dails into my ISP, logins in but I need to go to another virtual terminal to start my masquerading scripts. The system initially had 6.0 and then was upgraded to 6.2. The system was dialing into the ISP fine and starting up the firewall scripts from within /etc/ppp/ifup-ppp0. Now it does not do that. The bug is very repeatable. I can run whatever tests you feel it is necessary to either determine this is a bug or not.
This is actually by design; it will exit when the ppp connection exits.
RH 6.2 `ifup ppp0' returns after the connection is up and able to pass traffic (at least in my installation with initscripts-5.00-1). I am able to add a masquerading rule once at boot time and have it work for all subsequent PPP connections; could this work for you?