A bigger database isn't per definition slower, and a smaller database isn't per definition faster.
When a table contains a large amount of information, it could take longer for queries to get their results, depending on the type of query, the amount of data you want to return, the table structure attributes, types and indexes.
You could say, a database that is poorly set up, with less information, could theoretically be slower than a database that is set up good, with more information.
A few tips:
- Back-up and remove database rows that you definitely won't use anymore.
- Make sure the right indexes are set, based on the queries you do.
- Delete old, unused tables, this to clear up some space.
You can say, that in WordPress, if you have like 15000 posts, you can notice it in the performance of your website at some point. For example, when you want to query all the posts for a few with a specific status.
It also depends on what kind of server you have your MySQL on, is it a dedicated server with lots of memory and a killer processor, you won't "feel" the difference as fast than if you have your MySQL server on a old laptop that belonged to your grandma back in the days.
Your question about empty or semi-empty tables that influence performance, I wouldn't sleep a minute less over it. If those tables aren't used in any query, and there aren't much tables the performance difference is neglectable.