GUI - no.
JASS - yes. I'm not sure how but I know it's very possible to do. Likely dealing with local players (if p == GetLocalPlayer() then)
Untested though, so it might desync. But I'm positive it is possible somehow.
native CreateQuest () returns quest
function CreateQuestBJ takes integer questType, string title, string description, string iconPath returns quest
local boolean required = (questType == bj_QUESTTYPE_REQ_DISCOVERED) or (questType == bj_QUESTTYPE_REQ_UNDISCOVERED)
local boolean discovered = (questType == bj_QUESTTYPE_REQ_DISCOVERED) or (questType == bj_QUESTTYPE_OPT_DISCOVERED)
set bj_lastCreatedQuest = CreateQuest()
call QuestSetTitle(bj_lastCreatedQuest, title)
call QuestSetDescription(bj_lastCreatedQuest, description)
call QuestSetIconPath(bj_lastCreatedQuest, iconPath)
call QuestSetRequired(bj_lastCreatedQuest, required)
call QuestSetDiscovered(bj_lastCreatedQuest, discovered)
call QuestSetCompleted(bj_lastCreatedQuest, false)
return bj_lastCreatedQuest
endfunction
Well, you could always create the quest for everyone at map initialization, without the quest text. Just have it be filled with something like 'Undiscovered Quest'. Then, later, you can fill it with text for just the local player. Yes, that requires JASS.
native QuestSetDescription (quest whichQuest, string description) returns nothing
native QuestItemSetDescription (questitem whichQuestItem, string description) returns nothing