à la différence près que lorsque tu stockes dans ton varchar, le charset est adapté, et surtout, lorsque le package relis ton varchar, il connait le charset utilisé, certainement du ISO-8859-15 justement.
à mon avis, soit Oracle part du principe qu'une URI se doit de servir de l'UTF-8 uniquement, soit ton serveur web envoie en entête HTTP le charset UTF-8, et Oracle ne respecte pas le protocole, à savoir que le charset stipulé dans le fichier XML est censé primer sur celui utilisé pour le protocole de transport.