Hmm, lets see...
Code:
SQL> create table xyz (x char(1), y char(1), z char(1));

Table created.

SQL> create index xyz_indx on xyz(x);

Index created.

SQL> select index_name, status from dba_indexes
  2  where table_name = 'XYZ';

INDEX_NAME                     STATUS
------------------------------ --------
XYZ_INDX                       VALID

SQL> alter table xyz move tablespace users;

Table altered.

SQL> select index_name, status from dba_indexes
  2  where table_name = 'XYZ';

INDEX_NAME                     STATUS
------------------------------ --------
XYZ_INDX                       VALID

SQL>  alter table xyz move tablespace tools;

Table altered.

SQL> select index_name, status from dba_indexes
  2  where table_name = 'XYZ';

INDEX_NAME                     STATUS
------------------------------ --------
XYZ_INDX                       VALID
At first site, you would say no, oracle rebuilds the indexes. However, when you put data into the table:
Code:
SQL> insert into xyz values ('x','y','z');

1 row created.

SQL> commit;

Commit complete.

SQL> alter table xyz move tablespace tools;

Table altered.

SQL> select index_name, status from dba_indexes
  2  where table_name = 'XYZ';

INDEX_NAME                     STATUS
------------------------------ --------
XYZ_INDX                       UNUSABLE
Oracle tells us a different story. Yes, this index must be rebuilt. The same lies true for regular indexes on partitioned tables, global indexes, and the affected partition on partitioned tables.