All of these things are going to be counting data from some point in time. For your carrier, that will be the start of your billing cycle. For Android's internal data counter, it depends on the
Data Usage Cycle setting under
Data Usage in the
Settings app. For your widget, it again depends on the settings. Getting the reset times in sync is critical for making the numbers match up (and even then, as @Izzy pointed out, the carrier may account for data differently).
You could test this theory by turning off all data, setting Android's internal counter and the widget to reset at the same time, waiting until that time passes, then re-enabling data. The numbers should be better synced then. If they're not, then there's a chance the widget isn't able to track all data sent for some (likely security) reason.