He's an actor. He works for a paycheck, just like most of the rest of us.
I work at a convenience store. I'm against alcohol abuse. Does that mean I ought to refuse to sell booze to people that I know are alcoholics? No. If you are a consenting adult, it's your choice if you wish to cause harm to your own body. It's not my place to interfere. You're going to live how you want to live.
Actors portray others in film and television. It doesn't have any correlation to their beliefs in real life. If Jeff Daniels plays a plantation owner in the south during the 1830's in a film, it doesn't mean that he's pro-slavery. How silly would it be if someone were to crticize Jeff Daniels in real life for protraying a historicial figure in a film? Pretty darn silly. He's pretending to be somebody else for money.
Sean Penn is a very progressive person. He supports anti-gun legislation and he is generally very liberal. He plays other people when he's at work. It doesn't have anything to do with his personal beliefs. You might not like it, or you might even argue that it's ironic. It's not hypocrisy, though.