What the point comparing to other language ?
As stated by the help file, when a negative value is used, it return all BUT N characters, then :
$right(abc,-1) return bc
$right(ab,-1) return b
Do you expect $right(a,-1) to return 'a' now ? This would make inconstistency.
The mere fact that it's strange behaviour to me makes it a bug in my mind.
I don't call a strange behavior something that respect what the help file say.If you don't like the behavior it's another story, but to answer your question, yes the behavior is intentional.