I agree that switches shouldn't care about TCP or UDP ports. That is a job for a firewall.
However, that does not mean it is a good idea to have variable length headers in IPv6. In fact it seems like a singularly bad idea to me.
Regarding firewalls, I imagine it still sucks a firewall cannot judge each IP-packet separately but needs to deal with possible fragmented packets. Then again, that is the cost of being a firewall. You need to function at the application level and yet decide on the IP-packet level.