I just made a very similar arcade expression and noticed the same behavior that you're describing. I decided to try rearranging the expression to multiply it by 100 before rounding, so that it looks more like the following.
round(travelpercent*100, 2) + '%'
It seems to be giving me more consistent results now, though I don't have a lot of features to test it on.
EDIT
I read the documentation for the Round function, and it has a note that says to use the Text function to format numbers for display in labels and pop-ups. After looking at the documentation, I altered my expression to include the text function instead, and it even multiplies by 100 for me.
Text(travelpercent, '#.##%')
If you don't want decimals for your percentage, you will probably want to use the following format:
Text(travelpercent, '#%')