The obvious difference is that ISL is Cisco proprietary and 802.1q is an IEEE standard.
At a more technical level, the other main difference is that ISL encapsulates the original Ethernet frame within an ISL frame, effectively making ISL a tunneling protocol. The ISL header is 26-bytes with a 4-byte FCS
IEEE 802.1q on the other hand adds a 4-byte field between the Source Address (SA) field and the Type/length field of a standard Ethernet frame.
ISL plus points are that it's been around longer so it could be argued that it's more stable. Also, if you're implementing on older line cards they might not support 802.1q. On the downside, ISL adds 30-bytes to the Ethernet frame so the overhead is larger, and it won't inter-operate with non Cisco equipment.
There's nothing wrong with using 802.1q, indeed in the "Best Practice White Papaer" (http://www.cisco.com/en/US/partner/products/hw/switches/ps700/products_white_paper09186a00801b49a4.shtml) Cisco recommend using 802.1q.
Regards