In my opinion for application testing the best approach is to work on a mirror of the production site (either clone the prod. site if they're using Virtual machines or use a test environment). The key is that the code deployed should be the same as is in production. In that kind of environment you should be able to automate away without any concerns about the data created.
If you can't do that then the impact depends on the customer and the site. In many circumstances you can ask for test users, keep all the content under those users and then request that they are deleted at the end of testing.
If that's not possible then make sure you have the conversation about these side effects before you start testing. What you don't want to happen is that you get into the test, someone in the business notices their site filling up with "garbage" and they shut the test down.
Of course a security idealist would argue that they should have protected against the automation of form submission on their site, but that's not going to stop an irate marketing person wondering why they have several hundred emails about new comments on their blog :o)
Also as @johndeters says it's very important to keep track of the data and in the report explicitly recommend that they clean it up. I've had cases where someone came back to me 9 months after a test to complain that my test data had cause their upgrade to fail and I was very happy to be able to point them towards the section in my report where I told them to remove the test data.