datablocks are the nodes internal data, plugs are the user interface of said data. They are the different sides of the coin. The naming in mel differes from the naming of the api on purpose, Attributes is all users get, and they are what would be called plugs in the api.
Now when thinsg are connected then the plug on one side is equal to the plug on the other. So the plug may be clean because the other side of the connection thinks so, but the node in question may have a different idea about this of this since it hasnt got to react it. In general they would be the same, except for some kinds of constraints and other input output connections that dirty on themselves. Usually a difference is just a indication of some design issues.