At a glance I was also more worried about Wail of the Banshee than Devour Soul. Save or die effects are always tricky to balance as a DM, so be careful with both of them.
Rather than just nerfing the abilities, my advice would be to offer the players an in-game opportunity to "research" their opponent and find specific ways to resist those abilities. As an example, in the 3.5 game I'm running I recently had my party of 5th level adventurers take on a 7th level Kobold sorcerer (along with an assortment of Kobold minions). The PCs decided to enlist the aid of a local half-orc ranger who had been hunting the Kobolds, and he knew that their leader was especially fond of fire-based magic. This information allowed the players to plan accordingly, and the party druid was able to shield the party with Resist Energy (Fire) before they began their assault. Those 10 points of fire resistance easily made the difference between victory and defeat for the players, and in the end the players felt satisfied that their planning paid off.
In your situation, perhaps giving them information about the Demilich's ability to snatch away souls and store them in gems could provide an interesting pre-adventure hook. Maybe you could have the PCs discover a way to protect their souls, such as making use of a modified Magic Jar spell to store their own souls inside some sacred gems blessed by a deity who opposes undeath (with an accompanying quest to retrieve them?) which would prevent their souls from being affected by the Demilich. Or perhaps a party spellcaster could discover a way to "attune" themselves to the Demilich's crystals, enabling them to retain control and spellcasting ability from within the crystal, which would then allow them to free other souls captured by the Demilich, weakening its abilities.
I guess overall my suggestions would be to come up with creative solutions for the players to overcome the enemy's abilities. Don't make them go into a fight like this "blind", as that's pretty unfair. If you're worried that DC24 is going to be impossible for some players, try to figure out something else clever they can do to avoid that attack.
I would also suggest some caution at placing a very difficult foe at the end of a lengthy dungeon, unless the players have adequate time to prepare themselves for the final battle. I'm not a big fan of the "Let's go out of the dungeon and back to town to rest and we'll pick up where we left off tomorrow!" style of adventuring, since it kills a lot of the realism and urgency for me, so I try to balance my adventures/dungeons with lots of "easy" fights before a difficult fight. That way players have their resources taxed a bit before going in, but they aren't completely out of juice when they're expected to deal with the most challenging fight.