SELinux for RHEL not persistant after reboot

I just tried this on CentOS 6.5 and I cannot reproduce the behavior you're seeing.

# semanage boolean -l | head
SELinux boolean                State  Default Description

ftp_home_dir                   (off  ,  off)  Allow ftp to read and write files in the user home directories

# setsebool -P ftp_home_dir on

# semanage boolean -l | head
SELinux boolean                State  Default Description

ftp_home_dir                   (on   ,   on)  Allow ftp to read and write files in the user home directories

# reboot
The system is going down for reboot NOW!

...

# semanage boolean -l | head
SELinux boolean                State  Default Description

ftp_home_dir                   (on   ,   on)  Allow ftp to read and write files in the user home directories

According to the official documentation, this certainly is supposed to be the correct way of doing it.

Fortunately (!) with SELinux there's almost always two or more completely different ways of doing the same thing, as you've discovered. semanage can also set booleans, among many other things. Why this is, I think only Dan Walsh knows...

semanage boolean -m --on ftp_home_dir

Since you say that worked for you, I suspect something non-obvious was broken with your installation. At this point you may never find out what it was.