Vivado runs fine as well. At least 2017.1 and 2016.4 run as well as on Windows.
In case of Altera, the last time I used it (approx 5 years ago), the Linux one was more capable - the Windows one did not support the parallel port byteblaster anymore, linux one did. At that time it was handy - the newer jtag adapters were in use by colleagues and it was either wait or get another one ordered (and my machine happened to have serial port card with parallel port on it too). On both Altera ISE and Xilinx Vivado, the synthesis speed seems to be similar on both platforms, did not do any proper measurements though.
uC tools:
* nxp lpcxpresso / mcuxpresso run well on linux
* silabs (energy micro) stuff worked, too
* st system workbench has linux support, but I havent tried it myself (I use generic arm-gcc and my own scripts for stm32)
* cypress stuff is windows-only. Did not even work under wine. Runs well in vm (virtualbox). The uc us so complex (fpga-like reconfigurable peripherals), that without the vendors tools it would be almost impossible to do proper development ground-up. Even command-line-only tools to synthesize the hw and verilog sources for peripherals would be ok to have, but they don't seem to like this idea, instead forcing their gui on everybody.
* microchip (atmel) stuff was also windows-only. I have used generic arm-gcc and avr-gcc under linux without problems.
As said, just compiling stuff for ARM or AVR is not an issue at all under linux. You need a compiler and the register header file, that can be usually extracted from the vendors toolchain. Then you need the linker script, but that is simple to do. Finally you need the initialization code as the arm micros usually need a lot of initialization to be done by user code. This can be usually taken from vendors toolchain, alternatively it can be programmed manually but this takes a bit of work.
The programming / JTAG debug part is sometimes a little complicates as those micros do not have programming interface, instead via the JTAG the developer just uploads the program that runs on the micro and the data to flash and that program is executed then on the micro to write the data from ram to flash. As this little program comes with the programming tool, it needs to be written again and again for all tools. At least openocd supports a lot of ARM micros and this can be reused with different physical adapters, but this support usually is third-party developed, not from the vendor.
Apart from that, just grab a arm-gcc bare metal compiler, that is capable of the required cortex-m micro ISA and compile what you need.