> However, even if the default is different on python 3, I still think SIP should be set explicitly. If IPython uses an "untouched" approach, it won't always be obvious which API is being used. Is there some benefit to falling back on a version-dependent default that I'm not realizing?

This is the important distinction between qt for the kernel, and qt for the frontend.  The frontend, we are importing qt for *our own use*.  In  the kernel, we are only doing the absolute minimum possible for integrating the inputhook with the qt eventloop for compatiblity with *user* code.  We absolutely should not be setting any API values in the default situation in this case.