I realize your script is just a concept-piece and not the actual script, but is there a reason you go through all those checks to have the player sneak up on the keg stand? The only real question is if anyone actually sees the player activate the keg. If someone did, they'll tell the bartender.
The only reason I did it that way simply to demonstrate that one script could handle a theft concept that would function even without ownership being set, and still run a normal activation..
I would recommend moving the lines where you initialize beerthief into the onactivate block. As you have it written now, the kegs will be checking distance (which uses pythagorean's theorum... and calculating square roots is also computationally expensive) whenever the player is in the cell with the kegs.
Again, it's not working code... just an illustration, and I wasn't really willing to put a lot of time into it.
Also, I disagree with the way you require the player to be sneaking to even have a chance of avoiding paying a token. A player could also steal wine by either using a telekinesis spell (and being unobserved) or by using a powerful chameleon spell. There is also the possibility that the player is unobserved simply because everyone else in the bar is dead. None of those would allow a player to obtain wine without paying a token if the player must be successfully sneaking in order to trigger the beerthief code.
I required the PC to sneak because theft is primarily a thieves gambit, no? and if ownership is not set, nobody including the innkeeper will notice if the drink is stolen or not, thus the sneak to demonstrate thieving capability. Knowing if course that this will not be used as is.
Of course, if the player IS detected activating the beerkeg beyond a certain distance (and thus using a telekinesis spell) or while chameleoned, the same consequences should apply as if he was seen sneaking near the keg. I do like the idea of imposing a fine if the bartender sees the player trying to steal wine, although I think the fine is overkill (no pun intended). Here's a possible alternative suggestion:
1) If the player has at least three refill tokens, the bartender takes three tokens and loses 20 points of disposition.
2) If the player has at least one, but less than three, the bartender takes them all, calls the guard, and fines the player for the cost of the remaining one or two tokens. Bartender loses 40 points of disposition
3) If the player has NO refill tokens, the bartender calls the guard, fines the player the cost of all three tokens, and loses 80 points of disposition
The reason for the difference is that someone that actually has several refill tokens might be given the benefit of the doubt about sneaking or chameleon... obviously he had several tokens, so he's a good customer and he MIGHT have been getting ready to pay. The bartender's drop in disposition is caused by suspicion, but not outright dislike. But if the player had few tokens, he's probably a poor customer which still MIGHT have been getting ready to pay, but cheapskates don't get so much benefit of the doubt and the bartender is even more suspicious. On the other hand, if the player had NO tokens, he quite obviously wasn't going to pay. He gets NO benefit of the doubt, and the bartender considers him a deadbeat.
The fine is just a tad excessive, I suppose...
Now if he spilled the beer.... that would be alcohol abuse, and so demands proper consequences.
I like your ideas for incrementing fines and disposition adjustments. That seems a logical result.