Eu apenas tentei isso no CentOS 6.5 e não consigo reproduzir o comportamento que você está vendo.
# 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
De acordo com documentação oficial , esta certamente é a maneira correta de fazê-lo.
Felizmente (!) com o SELinux, há quase sempre duas ou mais formas completamente diferentes de fazer a mesma coisa, como você descobriu. semanage
também pode definir valores booleanos, entre muitas outras coisas. Por que isso é, eu acho que só Dan Walsh sabe ...
semanage boolean -m --on ftp_home_dir
Desde que você diz que funcionou para você, eu suspeito que algo não-óbvio foi quebrado com a sua instalação. Neste momento você pode nunca descobrir o que era.