I'm going to second GuelphDad but go *much* stronger:
If you have one table per user, you have a really screwed up database design. You are surely causing yourself much more grief by doing this than you could possibly be saving.
Anyway, the answer to your original question is simple: Use a Stored Procedure to add the entries.
I do agree with GuelphDad that there's no real reason to remove the entries to limit people to 100. MySQL will quite handily keep track of millions of records and if you just do LIMIT to get the latest 100, ordered by datetime posted perhaps, you really will keep it as simple and as efficient as possible.
But if you have some other odd reason to limit to 100, then a Stored Proc is clearly the way to go.
Code:
DELIMITER $$
CREATE PROCEDURE add_post
(
i_userid INT,
i_post TEXT
)
BEGIN
DELETE FROM posts WHERE userid = i_userid AND postid NOT IN (
SELECT postid FROM posts WHERE userid = i_userid
ORDER BY whenposted DESC LIMIT 100 );
INSERT INTO posts ( userid, whenposted, message )
VALUES( i_userid, NOW(), i_post );
END
$$
DELIMITER ;
And notice how easy this is, with all the posts in a single table instead of using one table per user. If you did use one table per user, the code would be MUCH more complex.