Is there a way to get SQL Server capcity constraints dynamically
No there's nothing built in that is exposed to us.

Your app would need to maintain some sort of configuration table itself.

You can't even try and parse it out of sys.messages as it isn't hardcoded into the text for message_id=1702.


  CREATE TABLE failed because column '%.*ls' in table '%.*ls' exceeds
  the maximum of %d columns.


Your app could of course try and dynamically discover the limit by simply trying CREATE TABLE statements with ever greater amounts of columns but that is not a serious suggestion.