set_color -i; echo -n foo and set_color -d; echo -n foo both do not work in Terminal.app or iTerm due to MacOS shipping a really old terminfo, despite Terminal.app and iTerm supporting the features.
There is an open radar report I filed with Apple over a year ago. It seems unlikely that Apple will update ncurses - it has shipped with a version from 2013 for years. High Sierra did not touch it.
On this platform, fish should override enter_italics_mode and enter_dim_mode with the correct escape to make the features usable.