FOR QGIS: Is there a benefit to having a single spatialite database that contains many different geometry types (e.g., point, line, polygon) over separate spatialite databases for each geometry type?
Spatialite databases don't work the way shapefiles do; there's no need to have separate files for each geometry type.
Two immediately apparent advantages of having all your relevant layers (of any geometry) in the one spatialite file are:
tidy data organisation
ability to quickly perform queries/analyses between layers within the same database
For example, if you wanted to count the points in one layer that are within the polygons in another layer, it's a lot easier and faster than if those two layers were in separate database files.
Firstly, in the context of GDAL/OGR, there are differences - structurally and functionally - between SQLite and Spatialite (which is SQLite + the Spatialite library). For use with QGIS, I usually go with SQLite because QGIS has many of the required geometry operators. For deployment, where PostGIS/PostgreSQL is overkill, I go with Spatialite (if possible).
A SHP file can store only one type of geometry. On the other hand, both SQLite and Spatialite can store multiple geometry types per table. (And, you can have more than one tables in a SQLite/Spatialite file.) However, for best-practises - I always constraint one geometry type per SQlite/Spatialite table. There are two main reasons for doing this. First - some QGIS/GRASS functions throws error when given a table with mixed geometries. For instance - a function that expects only lines/multilines was presented with a point - it crashes. Of course this is not QGIS' weakness but rather the tools that performed the operation. Second - each QGIS layers accepts/expects only one geometry type. If you have a table with multiple types - you need to add multiple times. This is not a big issue if you have only a few QGIS layers but it can quickly become confusing after a while, or for people who are not familiar with QGIS + SQLite/Spatialite. As an example - I once had great difficulty in explaining to an irritated customer why QGIS showed the layer count as having five records but visually it only showed three. The customer had thought there were geometry validity issues with the other two records when the truth was something else.
The screen shot below shows a trivial comparison between SQLite and Spatialite. Both files contain exactly the same set of geometries, ie two POINTs and two LINESTRING. Spatialite is much bigger because it carries all the geometry operators.