Availability Group Read Only Routing Not Working for SQL Logins
The issue was not in SQL or Windows Authentication methods, but in default_database setting
Found that for my Windows Authentication Login, default_database = [MyDatabase] (which participates in availability group), while my SQL Authentication Login has default_database = [master]
Because of above setting, while connecting in SSMS using Windows Authentication, Read Only Routing worked right after ApplicationIntent=ReadOnly was specified. For the SQL Authentication Login, not only ApplicationIntent=ReadOnly needs to be specified, but also it should contain Initial Catalog=[MyDatabase]
Adding Initial Catalog=[MyDatabase] fixed the issue, SQL Authentication Login could  connect and was directed to Read-Only secondary