Generally, indexes should be stored in separate tablespaces so that they can be placed in a separate bufferpool from the data. This is based on the assumption that you may want to have a higher bufferpool hit ratio for indexes than for the data, and that the entire database (tables and indexes) is larger than the amount of bufferpool memory that can be allocated on that server.
The number of tablespaces for data and indexes depends on the size of the database and each table (and whether you will need to do tablespace level backup/restores). Also, having more than one tablespace can improve backup and restore performance in most cases, if the database is large enough.
The above information is for DB2 LUW. DB2 for z/OS has different considerations.