They now follow this rule:
The player's quest status of quest_start must have the mask defined in quest_start_status in order for the spell to be applied/kept.
The player's quest status of quest_end must _NOT_ have the mask defined in quest_end_status in order for the spell to be removed
To generate the mask:
Take the QuestStatus enum in QuestDef.h, use (1 << theValueYouWant) to obtain a mask and you can use | to combine masks.
This expands the usage of the spell_area table, making possible to give a player an aura while he has a quest, but remove it as soon as the quest is completed (not rewarded).
Feature request by @Svannon