When you sleep in either form.. via Inns, Tents, or Sleeping Bag, the Float status is removed from the target, regardless if any of the character's equipment (Angel Wings/Cherub Down) has perma-Float status.
The menu and event code doesn't keep tabs of immunity and blocking.
Someone forgot about that minor check apparently as that is the only way of allowing one to cast Float on a character having the Angel Wings/Cherub Down equipped.
This is fixed in FF6A.
Was it fixed, or did you open the menu and see the status re-applied? Remember, the equipment check function is called when you open the menu, so any statuses that need to be set will be set then.
Does imp behave the same way as float in this regard?
Well, wouldn't the alternative is changing the Life/Fenix Down code to readd the statuses back on the character, or is that out of the question?
It can't be re-added. When it attempts to set it and the blocking is also set, the blocking will prevent the status from ever being set again until the battle ends. One conceivable way to fix it would be to bypass the "status to set" bytes and manually set it in the "current status" bytes. This can be very dangerous, though.

Just thought of something. The equpiment check function is versatile enough to be called from just about anywhere. I suppose a proposed fix would be to insert this call in the status removing event commands and check for the status you can have out of battle. Thoughts?

Checking that code, all three routines (remove, set, and toggle) make no effort to check anything. They just directly do what they want. It's all mostly redundant code, too, so this could be optimized greatly for inserted calls.