You have 2 options as I see it:

1: Take in your receipt and say "You know, this is odd, but I think someone made a mistake and forgot to ring up the crank on my bill." You might earn a level of respect or brownie points from Mr. Grumpy-pants, the owner, which could translate into better service in the future. He might even say, "Thanks for being honest, but it's our mistake. I'm not going to take your money." However, the owner doesn't sound like a nice guy, so I'm not betting on it.

2: Act like nothing's wrong and don't say a peep. It is by no means your fault that they forgot to put the part on your bill. For all they know, you just forked over your money without even scrutinizing your receipt.

I don't think the tempermental bike shop owner has any right to get mad at you for the crank that you weren't charged for. It's not like you walked in there and stole it. You didn't even realize what happened until after the fact. Badly trained, lazy, sloppy, and/or misbehaving employees are his fault, not the customer's.

I'm not advocating dishonesty, especially since you rely on this shop for your maintainance and supplies, but I really don't think you "owe" them much of anything. Too bad their poor business model is rewarded simply because of supply/demand. Good luck finding a new shop in the future.