Have you tried to delay the set so the game has time to "get ready". Something like:
Lua Code:
local frame = CreateFrame("PlayerModel", nil, UIParent, nil)
frame:SetSize(500, 500)
frame:SetPoint("CENTER", UIParent, "CENTER")
frame:SetScript("OnEvent", function(self)
self:UnregisterAllEvents()
self:SetModel(1087046)
self:SetTransform(0.1025, 0.1025, 0, 0, 0, 0, 0.1)
end)
frame:RegisterEvent("PLAYER_ENTERING_WORLD")