Yes, I spawn rather than place. I have the code for doing so in the On Client Enter script for each area, and I have it set up so that I only have to place waypoints (not ipoints) tagged or otherwise marked with a creature's resref, and a special local integer (I created a blueprint with that integer already set).
If I wanted the creatures to repeatedly respawn, that's when I might use an ipoint. I could spawn an ipoint for each of them that dies, a single ipoint for all of them, or use the area's heartbeat. I'd use an ipoint if I wanted to stop the respawning cleanly by simply destroying the ipoint, and the area heartbeat if I didn't plan to stop the respawning.
For simple event-based respawning, all I have to do is set a local variable, for instance in a conversation, and the On Client Enter script does its job again next time the player enters, or of course I can spawn them directly from the conversation at that same waypoint if I need them immediately.
The main advantage for me is what you said -- that you can alter the blueprint at any time, and not have to open up the area(s) where the NPC is placed and alter it there. This is especially handy when you're talking about large numbers of monsters. Consider appearance, gear, loot, and scripts on that NPC.
Another advantage is a minor ease on the computer, in that placed NPCs are evaluating their scripts from the beginning of the game, even when the player has never been there, while spawned NPCs only start once the player has actually been there, because they didn't exist until then.
You can spawn them whenever you actually need them, not necessarily on Client Enter.
As AGhost said, you do not need to destroy them on exit unless the area itself is a temporary area. My shopkeepers, for instance, are spawned once, and never destroyed. Most spawning scripts mark their waypoints as "done" with a local integer so that they don't spawn every time the player enters, but as mentioned earlier, that integer can be removed if you want to spawn them again.