Pros
Benefits, benefits, benefits... Enough said. Also, if you are smart, you can stretch what you work on for weeks and nobody will notice (that's also a con, as you will eventually become lazy)
Cons
Process is at times unbearable. Advancement in career is largely dependent on 'who-you-know' game, and if you came in lower level it is very hard to advance. Changing job inside company is very hard -- you have to go through interview loop as any other external candidate, but you also have to tell your current manager about it _before_ your interview is even scheduled. Technically, manager cannot prevent you from interviewing after 18 months in position, but it really brings you to uncomfortable position -- with scarcity of internal positions nowdays, there will be tens of people interviewing for one position, so there is good chance that you are not going to get it. While managers pay lip-sync to the line that they are there to support your career, you frequently become pariah in your group after you tried once to leave.