Whereas simple leaky bucket forces bursty traffic to smooth out, token bucket permits burstiness, but bounds it. Another difference between LB and token bucket is that token bucket has no discard or priority policy.
Token bucket is easy to implement.
In any period of time, the flow is allowed to exceed rate by tokens. So, if the network tries to police flows by simply measuring their traffic over intervals of length , a flow can cheat by sending tokens of data in every interval. This is cheating because the flow would send data equal to tokens in the interval and it is supposed to send at most tokens worth of data.