The main way that a prop_dynamic and a prop_physics differ is that a dynamic prop can be animated. Doors in HL2 are dynamic props. Also dynamic props do not require physics rendering because they are either stationary or move only when moved and then basically stay frozen or suspended when let go. Think if you've ever physgunned something you shouldn't have on a map without protection on.
So that being said... your chat bubbled SHOULD be prop_dynamic. This may seem minimal.. but it's good practice to use the correct entity type. If you have ever played my Stranded gamemode, every tree and rock are dynamic props.
You are correct about the static props though.. It is impossible to spawn a static prop post compile.
One last thing.. being a static prop does not stop bullets, you would have to set it's collision type for that, however since bullets are tracers if you set them to not be able to get shot, you would also not be able to use any tools on them (i.e. deleting with the tool gun in the case of a glitch...)
One thing you could do to fix this is assign the entity to the player and remove all entities assigned to the player when they close the chat menu every time, so that way if it glitches once, the next time they chat it'll delete it. Also you could have it check to see if one already exists for that player and not create another one so that way if it glitches and they chat again, it'll just reuse the current bubble and then delete it on close.
One more hacky way to get rid of a glitched bubble would be to create a remove timer on every bubble as it's spawned. Let's say 2 minutes for example. After 2 minutes it checks to see if the bubble is still there and deletes it if it is. Obviously some people are slow typers so that number might need to be higher.
just my 2 cents
Sorry for the rambling.