From Sonic Retro
When Sonic rolls up by pressing on the directional pad, he can no longer accelerate. No matter how hard or how long you press in the direction of his motion, he'll behave as if you weren't doing a thing. The only thing that happens in this case is friction, here a value of 0.0234375, half of normal so that it feels like he's rolling smoothly like a wheel or a ball. The Mega Drive actually calculates rolling friction by halving the normal friction value. If you use the Game Genie to alter the friction value, rolling friction is always half.
However, Sonic can decelerate while rolling. If you hold in the opposite direction of his motion, X speed will be slowed by 0.125. Additionally, unlike normal walking, friction is still in effect while rolling, even if you press in a direction. So, in effect, while decelerating, X speed slows by 0.125+0.0234375, or 0.1484375, every step.
Strangely, the same deceleration anomaly happens while rolling as while running. If absolute X speed is less than 0.1484375, when this value is subtracted, instead of just setting X speed to zero, X speed is set to .5 in the opposite direction. Thus, bizarrely, Sonic can turn around while rolling, even though he can't accelerate! This is fixed in Sonic 3 and Knuckles, so apparently the programmers themselves found this undesirable.
(Note: As of right now, this has only been confirmed with Sonic 1 and 2. Currently unknown if this exists in Sonic 3K or Sonic CD.)
Now, just because Sonic cannot roll faster on his own, doesn't mean that a nice hill wouldn't give him some momentum every now and then. These hills and slopes can be used to roll at a very high speed. Just as with running though, Sonic has a top speed cap when rolling as well, though this one is much higher than the former, reaching a top speed of 16 pixels per step. Unlike running however, Sonic cannot surpass this speed cap by any means. If his gsp reaches a point where it reaches 16, and tries to go higher, it will automatically be set to 16 instead.
In Sonic 1 and 2, Sonic can't roll up unless his absolute X speed is greater than 0.53125.
In Sonic 3 and Knuckles, this value is increased to 1.03125. This is very convenient, because you have to hold down to Spindash. If Sonic had to be perfectly still before he could duck, you'd have trouble performing the Spindash quickly and easily.
In Sonic 3 and Knuckles, probably as a way to combat the anomaly associated with turning around while rolling in the previous games, Sonic unrolls if absolute X speed falls below .5.
In Sonic 1, 2, 3, and Knuckles, you can't control Sonic's trajectory through the air with the directional buttons if you jump while rolling. This makes it kind of hard to Spindash to gain speed, and then make a precise jump. Though, in Sonic 3 and in Sonic & Knuckles, you can regain control of the directional keys if you perform a Insta-Shield.
However, in Sonic CD, you can control a jump made while rolling, as if it were a totally normal jump. This is probably more fair to the player.