It would be nice if 800/888 numbers were free calls, I agree, but it's still a call using AT&T's network so they will charge you for the duration of the call.
I'm not sure what you mean by the system charges you sometimes when you make a call, and then other times, it does not. After each call, depending on your plan, you should receive a notification saying something like, "The last transaction cost $0.20 USD. Your balance is $X.XX." Sometimes the notification will show up - other times, it does not. Is this what you are confused about?