You may be able to do something along the lines of:
1. Have a new quests table in the db, each entry having an id and text description.
2. Add a new column to the user table for quests, maybe a blob type (I don't remember much about mysql). It would have a list of quest ids, and indicators of progress in those quests.
5923,3;1821,1
means that on quest 5923 we have progress 3, and 1821 we have progress 1. There would be some overhead from having it all stored here, but shouldn't be too bad.
3. From there, it would be up to the quest scripts to know what the progress levels mean. They would be able to retrieve/set quest progress, and act accordingly (ie: "Oh, EQPlayer01, you only have progress 3 on this quest. Come back at a later time")
Just one implementation that comes to mind, but it seems workable. Of course I'm not familiar with the eqemu code (yet), so I don't think I'll be coding it